#include <bits/stdc++.h>
using namespace std;
#define ll int
unordered_map<ll,ll>vis;
unordered_map<ll,ll>trie[26];
ll ans[100005];
ll sz;
void in(char s[])
{
    ll st=0,dep=0,mi=0;
    for (ll i=0;i<strlen(s);i++)
    {
        dep+=1;
        ll cur=s[i]-97;
        if(!vis[trie[cur][st]])
        {
            trie[cur][st]=++sz;
        }

        vis[trie[cur][st]]+=1;
        if(i==0)
            mi=vis[trie[cur][st]];
        else
        {
          mi=min(mi,vis[trie[cur][st]]);
        }
        ans[dep]=max(ans[dep],mi);
        st=trie[cur][st];
    }
}


char s[100005];
int main()
{
    ll i,j,k,n,m,t;
    scanf("%d",&t);
    while(t--)
    {
        ll q;
        sz=0;
        for(i=0;i<=100000;i++)
        {
            ans[i]=0;
        }
        for(i=0;i<26;i++) trie[i].clear();
        vis.clear();
        scanf("%d %d",&n,&q);
        while(n--)
        {
            scanf("%s",s);
            in(s);
        }
        while(q--)
        {
            scanf("%d",&j);
            printf("%d\n",ans[j]);
        }

    }

}
