#include <bits/stdc++.h>
#define FstIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define pb push_back
#define mem(a, v) memset(a, v, sizeof a)
#define pii pair<ll, ll>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
const ll N = 2e6 + 5, M = 2e2 + 5;
const ll mod = 1e9 + 7, mod2 = 998244353;
const ld eps = 1e-6;
ll t;
ll n, q;
ll Trie[N][M], cnt[N], idx;
ll get(char c)
{
if (c >= 'A' && c <= 'Z') return c - 'A';
if (c >= 'a' && c <= 'z') return c - 'a' + 26;
return c - '0' + 52;
}
void insert(string s)
{
ll p = 0;
for (ll i = 0; i < s.size(); i ++ )
{
ll q = get(s[i]);
if (!Trie[p][q])
Trie[p][q] = ++ idx;
p = Trie[p][q];
++ cnt[p];
}
}
ll find(string s)
{
ll p = 0;
for (ll i = 0; i < s.size(); ++ i )
{
ll q = get(s[i]);
if (!Trie[p][q]) return 0;
p = Trie[p][q];
}
return cnt[p];
}
signed main()
{
FstIO;
cin >> t;
while (t -- )
{
for (ll i = 0; i <= idx; ++ i )
for (ll j = 0; j <= 150; ++ j )
Trie[i][j] = 0;
for (ll i = 0; i <= idx; ++ i ) cnt[i] = 0;
idx = 0;
cin >> n >> q;
for (ll i = 1; i <= n; ++ i )
{
string s; cin >> s;
insert(s);
}
while (q -- )
{
string s; cin >> s;
cout << find(s) << '\n';
}
}
return 0;
cout.flush();
}