#include <bits/stdc++.h>
using namespace std;
int n, m;
long long dp[1 << 20];
string ch;
int arr[20][20];
long long cost[1 << 20];
long long fun(long long mask) {
  if (mask == ((1LL << m) - 1)) {
    return 0;
  }
  if (dp[mask] != -1) return dp[mask];
  long long res = 1e18;
  long long cnt = __builtin_popcount(mask);
  for (int i = 0; i < m; i++) {
    long long req = mask & (1 << i);
    long long sum = 0;
    if (req == 0) {
      res = min(res, fun(mask | (1 << i)));
    }
  }
  return dp[mask] = res + cost[mask];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  while (cin >> n >> m) {
    memset(arr, 0, sizeof arr);
    memset(cost, 0, sizeof cost);
    cin >> ch;
    for (int i = 1; i < n; i++) {
      int a1 = ch[i] - 'a';
      int a2 = ch[i - 1] - 'a';
      if (a1 > a2) {
        swap(a1, a2);
      }
      if (a1 != a2) {
        arr[a1][a2]++;
      }
    }
    long long ghurbe = 1 << 20;
    for (int mask = 0; mask < ghurbe; mask++) {
      for (int j = 0; j < m; j++) {
        for (int k = j + 1; k < m; k++) {
          if ((mask & (1 << k)) > 0 != (mask & (1 << j)) > 0) {
            cost[mask] += arr[j][k];
          }
        }
      }
    }
    memset(dp, -1, sizeof dp);
    cout << fun(0) << endl;
  }
  return 0;
}
