#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
const int kind = 26;
struct node {
int num;
bool terminal;
node* next[26];
node() {
num = 1;
terminal = false;
memset(next, 0, sizeof(next));
}
};
string s1;
string s2;
void Insert(node* root, string s1) {
node* p = root;
int index;
int len = s1.length(); /// band
for(int i = 0; i < len; i++) { /// band
index = s1[i] - 'a';
if(p->next[index] == NULL) {
p->next[index] = new node();
}
else {
p->next[index]->num++;
}
p = p->next[index];
}
p->terminal = true;
}
int Find(node* root, string s2) {
node* p = root;
int i, index;
int len = s2.length();
for(i = 0; i < len; i++) {
index = s2[i] - 'a';
if(p->next[index] != NULL) {
if(i == len-1) {
return p->next[index]->num;
}
}
else {
return 0;
}
p = p->next[index];
}
return 0;
}
int main() {
node* root = new node();
while(getline(cin, s1) && !s1.empty()) {
Insert(root, s1);
}
while(getline(cin, s2)) {
int k = Find(root, s2);
printf("%d\n", k);
}
return 0;
}