#include <bits/stdc++.h>
using namespace std;
const bool testcases = true;
int64_t seed;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline int64_t rnd(int64_t l = 0, int64_t r = INT_MAX) {
  return uniform_int_distribution<int64_t>(l, r)(rng);
}
inline bool in_range(int64_t a, int64_t l, int64_t r) {
  return (a >= l && a <= r);
}
template <typename H, typename... T>
void inp(H &head) {
  cin >> head;
}
template <typename H, typename... T>
void inp(H &head, T &...tail) {
  cin >> head;
  inp(tail...);
}
template <typename T>
bool isPrime(T n) {
  for (T i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return n >= 2;
}
template <typename T>
inline istream &operator>>(istream &in, vector<T> &a) {
  for (T &x : a) in >> x;
  return in;
}
template <typename T, typename U>
inline istream &operator>>(istream &in, pair<T, U> &a) {
  in >> a.first >> a.second;
  return in;
}
void solve();
void fast_io();
int32_t main(int32_t argc, char **argv) {
  fast_io();
  int64_t TC = 1;
  if (testcases) cin >> TC;
  for (int64_t tc = 1; tc <= TC; tc++) solve(), 108;
  return 0;
}
string s;
const int64_t INF = INT_MAX;
int64_t solve(int64_t req, int64_t l, int64_t r) {
  char ch = req + 'a';
  if (req >= 26) return INF;
  if (l == r) return (s[l] == ch ? 0 : 1);
  int64_t mid = (l + r) / 2;
  int64_t L = solve(req + 1, l, mid);
  int64_t R = solve(req + 1, mid + 1, r);
  for (int64_t i = mid + 1; i <= r; i++) L += (s[i] == ch ? 0 : 1);
  for (int64_t i = l; i <= mid; i++) R += (s[i] == ch ? 0 : 1);
  return min(L, R);
}
void solve() {
  int64_t n;
  cin >> n >> s;
  int64_t ans = solve(0, 0, n - 1);
  cout << ans << '\n';
}
void fast_io() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
}
