#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e6 + 5;
int _;
int dep[N], t[3000005][65];
struct Trie_Tree
{
void init(){
memset(dep, 0, sizeof(dep)); memset(t, 0, sizeof(t)); _=0;
}
int getsum(char x)
{
if(x >= 'a' && x <= 'z') return x - 'a';
else if(x >= 'A' && x <= 'Z') return x - 'A' + 26;
else return x - '0' + 52;
}
void insert(string s){
int fa = 0;
for(int i = 0;i < s.size();i ++ ){
int x = getsum(s[i]);
if(!t[fa][x]) t[fa][x] = ++_;
fa = t[fa][x];
dep[fa] ++;
}
}
int query(string s){
int fa = 0;
for(int i = 0;i < s.size();i ++ ){
int x = getsum(s[i]);
if(!t[fa][x]) return 0;
fa = t[fa][x];
}
return dep[fa];
}
}tire;
void work()
{
tire.init();
int n, q; cin >> n >> q;
for(int i = 1;i <= n;i ++ ){string s; cin >> s; tire.insert(s);}
while(q -- ) {string s; cin >> s;cout << tire.query(s) << endl;}
}
signed main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int T; cin >> T; while(T -- ) work();
return 0;
}