#include <bits/stdc++.h>
using namespace std;
int t, n, q;
struct node{
int son[100];
int cnt;
} a[100005];
int get(char ch)
{
if (ch >= 'A' && ch <= 'Z')
{
return ch - 'A' + 27;
}
else if (ch >= 'a' && ch <= 'z')
{
return ch - 'a' + 1;
}
return ch - '0' + 53;
}
void insert(string s)
{
int len = s.size(), now = 1, cnt = 1;
for (int i = 0; i < len; i++)
{
int num = get(s[i]);
if (a[now].son[num] == 0)
{
a[now].son[num] = ++cnt;
}
now = a[now].son[num];
if (i == len - 1)
{
a[now].cnt++;
}
}
return ;
}
void find(string s)
{
int len = s.size(), now = 1, ans = 0;
for (int i = 0; i < len; i++)
{
int num = get(s[i]);
if (a[now].son[num] == 0)
{
cout << ans << endl;
return ;
}
now = a[now].son[num];
ans += a[now].cnt;
}
cout << ans << endl;
return ;
}
signed main()
{
ios::sync_with_stdio();
cin.tie(0);cout.tie(0);
t = 1;
while (t--)
{
int n, q;
cin >> n >> q;
for (int i = 0; i < n; i++)
{
string s;
cin >> s;
insert(s);
}
while (q--)
{
string s;
cin >> s;
find(s);
}
}
return 0;
}