#include<iostream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cstdio>
#define Max 26
using namespace std;
struct TrieNode{
int ti;
TrieNode *next[Max];
TrieNode(){
ti=0;
memset(next,NULL,sizeof(next));
}
};
void Insert(TrieNode *root,char * str){
int len=strlen(str);
TrieNode *p=root;
for(int i=0;i<len;++i){
int id=str[i]-'a';
if(p->next[id]==NULL)
p->next[id]=new TrieNode();
p=p->next[id];
p->ti++;
}
}
int searchTrie(TrieNode *root,char *str){
TrieNode *p=root;
int len=strlen(str);
for(int i=0;i<len;++i){
int id=str[i]-'a';
if(p->next[id]==NULL)
return 0;
p=p->next[id];
}
return p->ti;
}
int Behind(TrieNode *root,char *str){
TrieNode *p=root;
int len=strlen(str);
int ans=0;
for(int i=0;i<len;++i){
int id=str[i]-'a';
for(int j=id+1;j<Max;++j)
if(p->next[j]!=NULL)
ans+=p->next[j]->ti;
p=p->next[id];
}
for(int i=0;i<Max;++i)
if(p->next[i]!=NULL)
ans+=p->next[i]->ti;
return ans;
}
int n,m,ans;
char str[50005];
char now[50006];
int main(){
TrieNode *root=new TrieNode();
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%s",str);
Insert(root,str);
}
scanf("%d",&m);
for(int i=1;i<=m;++i){
scanf("%s",str);
printf("%d
",searchTrie(root,str));
}
delete root;
return 0;
}