#include <bits/stdc++.h>
using namespace std;
bool is_prime(int n) {
  int root = sqrt(n);
  if (n == 1) return false;
  for (int i = 2; i <= root; i++) {
    if (n % i == 0) return false;
  }
  return true;
}
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int digitsOfFact(int n) {
  double x = 0;
  for (int i = 1; i <= n; i++) {
    x += log10(i);
  }
  int res = x + 1 + 1e-9;
  return res;
}
struct Point {
  string ok1;
  string ok2;
  int x;
  int y;
  int z;
  int s;
};
const int N = 2e5 + 1;
int accept() {
  int n;
  cin >> n;
  string s;
  cin >> s;
  char oxo = 'a';
  int ans1, ans2, cnt1 = 0, cnt2 = 0, cnt = 0, ans = 0;
  int id1 = 0, id2 = 0;
  set<int> ok;
  set<int> ok1;
  while (true) {
    for (int i = 0; i < (n / 2); i++) {
      if (s[i] == oxo) id1++;
      ok.insert(s[i]);
    }
    for (int i = (n / 2); i < n; i++) {
      if (s[i] == oxo) id2++;
      ok1.insert(s[i]);
    }
    if (id1 > id2 || (id1 == id2 && ok.size() > ok1.size())) {
      for (int i = 0; i < n / 2; i++)
        if (oxo != s[i]) ans++;
      s.erase(0, (n / 2));
      n /= 2;
    } else {
      for (int i = (n / 2); i < n; i++)
        if (oxo != s[i]) ans++;
      s.erase((n / 2), (n / 2));
      n /= 2;
    }
    oxo++;
    if (n == 0) break;
    id1 = 0, id2 = 0;
  }
  cout << ans << "\n";
  return 0;
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    accept();
  }
  return 0;
}
