#include <bits/stdc++.h>
using namespace std;
const long long MXN = 300 + 10;
const long long MX5 = 2e5 + 10;
const long long MX6 = 1e6 + 10;
const long long LOG = 20;
const long long INF = 1e15;
const double eps = 1e-9;
const long long MOD = 1e9 + 7;
long long power(long long a, long long b, long long md) {
  return (!b ? 1
             : (b & 1 ? a * power(a * a % md, b / 2, md) % md
                      : power(a * a % md, b / 2, md) % md));
}
long long bmm(long long a, long long b) {
  return (a % b == 0 ? b : bmm(b, a % b));
}
string base2(long long n) {
  string a = "";
  while (n >= 2) {
    a += (char)(n % 2 + '0');
    n /= 2;
  }
  a += (char)(n + '0');
  reverse((a).begin(), (a).end());
  return a;
}
long long q, n, m, x;
long long A[MX5], cnt[50], ps[MX5];
string s;
void solve() {
  memset(cnt, 0, sizeof cnt);
  memset(ps, 0, sizeof ps);
  cin >> n >> m >> s;
  for (int i = 0; i < m; i++) {
    cin >> x;
    ps[x - 1]++;
  }
  for (int i = n - 1; i >= 0; i--) ps[i] += ps[i + 1];
  for (int i = 0; i <= n - 1; i++) {
    cnt[s[i] - 'a'] += ps[i] + 1;
  }
  for (int i = 'a' - 'a'; i <= 'z' - 'a'; i++) {
    cout << cnt[i] << ' ';
  }
  cout << '\n';
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> q;
  while (q--) solve();
  return 0;
}
