/*input
1
5 4
abccba
abddba
xa
abdcba
aneverknow
1
2
4
3
*/
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize ("O3")
typedef long long ll;
typedef long double ld;
int kiek[101010];
int NXT[101010][26];
int ans[101010];
int main()
{
	for (int t = 0; t < 101010; t++)
	{
		kiek[t] = ans[t] = 0;
		for (int d = 0; d < 26; d++)
			NXT[t][d] = -1;
	}
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		int num = 1;
		int n, q;
		cin >> n >> q;
		while (n--)
		{
			string s;
			cin >> s;
			int kur = 0;
			for (int i = s.size() - 1; i >= 0; i--)
			{
				int k = s[i] - 'a';
				if (NXT[kur][k] == -1)
					NXT[kur][k] = num++;
				kur = NXT[kur][k];
				ans[s.size() - i] = max(ans[s.size() - i], ++kiek[kur]);
			}
		}
		while (q--)
		{
			int x;
			cin >> x;
			cout << ans[x] << '\n';
		}
		for (int t = 0; t <= num; t++)
		{
			kiek[t] = ans[t] = 0;
			for (int d = 0; d < 26; d++)
				NXT[t][d] = -1;
		}
	}
}