#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=100;
char s[maxn][5],temp[5];
int hashlist[26*26*26+maxn];//每个字符串由三个大写字母组成,每个字母可以是26个字母中的任意一个,所以一共有26*26*26种组合
int dohash(char s[],int n)
{
int flag=0;
for(int i=0;i<n;i++)
{
flag=flag*26+(s[i]-'A');//将字母转换成整数
}
return flag;
}
int main()
{
int n,m;
cin>>n>>m;
memset(hashlist,0,sizeof(hashlist));
for(int i=0;i<n;i++)
{
scanf("%s",s[i]);
int flag=dohash(s[i],3);
hashlist[flag]++;//出现的字符串对应的整数作为下标并累加
}
for(int i=0;i<m;i++)
{
scanf("%s",temp);
int flag=dohash(temp,3);
cout<<hashlist[flag]<<endl;
}
return 0;
}