#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define initial first
#define added second
#define sort_all(v) sort(v.begin(), v.end())
#define ya_sayed_ya_badawy \
ios_base::sync_with_stdio(false); \
cin.tie(NULL);
const int MAX = 1e6 + 50;
const int MOD = 1e9 + 7;
const int OO = 1e9;
const double EPS = (double)1e-9;
int add(ll a, int b)
{
return (a + b) % MOD;
}
int sub(ll a, int b)
{
return (a - b + MOD) % MOD;
}
int mul(ll a, int b)
{
return (a * b) % MOD;
}
int fp(int a, int pw)
{
if (!pw)
{
return 1;
}
int ret = fp(a, pw >> 1);
ret = mul(ret, ret);
if (pw & 1)
{
ret = mul(ret, a);
}
return ret;
}
int inv(int a)
{
return fp(a, MOD - 2);
}
int divide(int up, int down)
{
return mul(up, inv(down));
}
const int ALPHA = 26;
struct Trie
{
struct Node
{
int child[ALPHA] = {};
int f = 0;
};
vector<Node> trie;
Trie()
{
trie.emplace_back();
}
void insert(string &s)
{
int node = 0;
for (auto &i : s)
{
int chIdx = i - 'a';
if (!trie[node].child[chIdx])
{
trie[node].child[chIdx] = trie.size();
trie.emplace_back();
}
node = trie[node].child[chIdx];
trie[node].f++;
}
}
void erase(string &s)
{
int node = 0;
for (auto &i : s)
{
int chIdx = i - 'a';
node = trie[node].child[chIdx];
trie[node].f--;
}
}
int query(string &s)
{
int node = 0;
for (auto &i : s)
{
int chIdx = i - 'a';
if (!trie[trie[node].child[chIdx]].f)
{
return 0;
}
node = trie[node].child[chIdx];
}
return trie[node].f;
}
};
void solve()
{
int n, q;
cin >> n >> q;
Trie tr;
while (n--)
{
string s;
cin >> s;
tr.insert(s);
}
while (q--)
{
string s;
cin >> s;
cout << tr.query(s) << endl;
}
}
signed main()
{
ya_sayed_ya_badawy int t = 1;
// cin >> t;
while (t--)
{
solve();
// cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgaW5pdGlhbCBmaXJzdAojZGVmaW5lIGFkZGVkIHNlY29uZAojZGVmaW5lIHNvcnRfYWxsKHYpIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpKQoKI2RlZmluZSB5YV9zYXllZF95YV9iYWRhd3kgICAgICAgICAgICBcCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgXAogICAgY2luLnRpZShOVUxMKTsKCmNvbnN0IGludCBNQVggPSAxZTYgKyA1MDsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBPTyA9IDFlOTsKY29uc3QgZG91YmxlIEVQUyA9IChkb3VibGUpMWUtOTsKCmludCBhZGQobGwgYSwgaW50IGIpCnsKICAgIHJldHVybiAoYSArIGIpICUgTU9EOwp9CgppbnQgc3ViKGxsIGEsIGludCBiKQp7CiAgICByZXR1cm4gKGEgLSBiICsgTU9EKSAlIE1PRDsKfQoKaW50IG11bChsbCBhLCBpbnQgYikKewogICAgcmV0dXJuIChhICogYikgJSBNT0Q7Cn0KCmludCBmcChpbnQgYSwgaW50IHB3KQp7CiAgICBpZiAoIXB3KQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGludCByZXQgPSBmcChhLCBwdyA+PiAxKTsKCiAgICByZXQgPSBtdWwocmV0LCByZXQpOwoKICAgIGlmIChwdyAmIDEpCiAgICB7CiAgICAgICAgcmV0ID0gbXVsKHJldCwgYSk7CiAgICB9CiAgICByZXR1cm4gcmV0Owp9CgppbnQgaW52KGludCBhKQp7CiAgICByZXR1cm4gZnAoYSwgTU9EIC0gMik7Cn0KCmludCBkaXZpZGUoaW50IHVwLCBpbnQgZG93bikKewogICAgcmV0dXJuIG11bCh1cCwgaW52KGRvd24pKTsKfQoKY29uc3QgaW50IEFMUEhBID0gMjY7CgpzdHJ1Y3QgVHJpZQp7CiAgICBzdHJ1Y3QgTm9kZQogICAgewogICAgICAgIGludCBjaGlsZFtBTFBIQV0gPSB7fTsKICAgICAgICBpbnQgZiA9IDA7CiAgICB9OwoKICAgIHZlY3RvcjxOb2RlPiB0cmllOwoKICAgIFRyaWUoKQogICAgewogICAgICAgIHRyaWUuZW1wbGFjZV9iYWNrKCk7CiAgICB9CgogICAgdm9pZCBpbnNlcnQoc3RyaW5nICZzKQogICAgewogICAgICAgIGludCBub2RlID0gMDsKICAgICAgICBmb3IgKGF1dG8gJmkgOiBzKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGNoSWR4ID0gaSAtICdhJzsKICAgICAgICAgICAgaWYgKCF0cmllW25vZGVdLmNoaWxkW2NoSWR4XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdHJpZVtub2RlXS5jaGlsZFtjaElkeF0gPSB0cmllLnNpemUoKTsKICAgICAgICAgICAgICAgIHRyaWUuZW1wbGFjZV9iYWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbm9kZSA9IHRyaWVbbm9kZV0uY2hpbGRbY2hJZHhdOwogICAgICAgICAgICB0cmllW25vZGVdLmYrKzsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBlcmFzZShzdHJpbmcgJnMpCiAgICB7CiAgICAgICAgaW50IG5vZGUgPSAwOwogICAgICAgIGZvciAoYXV0byAmaSA6IHMpCiAgICAgICAgewogICAgICAgICAgICBpbnQgY2hJZHggPSBpIC0gJ2EnOwoKICAgICAgICAgICAgbm9kZSA9IHRyaWVbbm9kZV0uY2hpbGRbY2hJZHhdOwogICAgICAgICAgICB0cmllW25vZGVdLmYtLTsKICAgICAgICB9CiAgICB9CgogICAgaW50IHF1ZXJ5KHN0cmluZyAmcykKICAgIHsKICAgICAgICBpbnQgbm9kZSA9IDA7CiAgICAgICAgZm9yIChhdXRvICZpIDogcykKICAgICAgICB7CiAgICAgICAgICAgIGludCBjaElkeCA9IGkgLSAnYSc7CiAgICAgICAgICAgIGlmICghdHJpZVt0cmllW25vZGVdLmNoaWxkW2NoSWR4XV0uZikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbm9kZSA9IHRyaWVbbm9kZV0uY2hpbGRbY2hJZHhdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJpZVtub2RlXS5mOwogICAgfQp9OwoKdm9pZCBzb2x2ZSgpCnsKICAgIGludCBuLCBxOwogICAgY2luID4+IG4gPj4gcTsKCiAgICBUcmllIHRyOwoKICAgIHdoaWxlIChuLS0pCiAgICB7CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgY2luID4+IHM7CiAgICAgICAgdHIuaW5zZXJ0KHMpOwogICAgfQoKICAgIHdoaWxlIChxLS0pCiAgICB7CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgY2luID4+IHM7CiAgICAgICAgY291dCA8PCB0ci5xdWVyeShzKSA8PCBlbmRsOwogICAgfQp9CgpzaWduZWQgbWFpbigpCnsKICAgIHlhX3NheWVkX3lhX2JhZGF3eSBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pCiAgICB7CiAgICAgICAgc29sdmUoKTsKICAgICAgICAvLyBjb3V0IDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==