#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+1, P = 26;
int prefix[N][P], trials[N], m, n, t;
int main() {
cin.tie(nullptr)->sync_with_stdio(false), cin >> t;
for (string s; t--; cout << '\n', fill(trials,trials+n+1,0)) {
cin >> n >> m >> s, trials[n] = 1;
for (int i = 0; i < n; ++i) {
const auto prev = prefix[i], pres = prefix[i+1];
copy(prev,prev+P,pres), ++pres[s[i]-'a']; }
for (int p; m--; ++trials[p])
cin >> p;
for (int k = 0; k < P; ++k) {
long long count = 0;
for (int p = 1; p <= n; ++p)
count += 1ll*prefix[p][k]*trials[p];
cout << count << ' '; } }
return 0; }
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOID0gMmU1KzEsIFAgPSAyNjsKaW50IHByZWZpeFtOXVtQXSwgdHJpYWxzW05dLCBtLCBuLCB0OwoKaW50IG1haW4oKSB7CiAgICBjaW4udGllKG51bGxwdHIpLT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4gPj4gdDsgCglmb3IgKHN0cmluZyBzOyB0LS07IGNvdXQgPDwgJ1xuJywgZmlsbCh0cmlhbHMsdHJpYWxzK24rMSwwKSkgewoJICAgIGNpbiA+PiBuID4+IG0gPj4gcywgdHJpYWxzW25dID0gMTsKCSAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewoJICAgICAgICBjb25zdCBhdXRvIHByZXYgPSBwcmVmaXhbaV0sIHByZXMgPSBwcmVmaXhbaSsxXTsKCSAgICAgICAgY29weShwcmV2LHByZXYrUCxwcmVzKSwgKytwcmVzW3NbaV0tJ2EnXTsgfQogICAgICAgIGZvciAoaW50IHA7IG0tLTsgKyt0cmlhbHNbcF0pCiAgICAgICAgICAgIGNpbiA+PiBwOwogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgUDsgKytrKSB7CiAgICAgICAgICAgIGxvbmcgbG9uZyBjb3VudCA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IHAgPSAxOyBwIDw9IG47ICsrcCkKICAgICAgICAgICAgICAgIGNvdW50ICs9IDFsbCpwcmVmaXhbcF1ba10qdHJpYWxzW3BdOwogICAgICAgICAgICBjb3V0IDw8IGNvdW50IDw8ICcgJzsgfSB9CiAgICByZXR1cm4gMDsgfQogICAg