#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 2;
const int M = 20;
const int oo = 1e9 + 5;
int n, m, t, k;
char s[N];
int c[25][25];
int memo[21][(1 << 20) + 5];
int target;
int dp(int i, int mask) {
  if (i > m) return 0;
  if (memo[i][mask] != -1) return memo[i][mask];
  int res = oo;
  for (int j = 0; j <= m - 1; j++) {
    if ((1 << j) & mask) continue;
    int cost = 0;
    for (int k = 0; k < m; k++) {
      if (j == k) continue;
      if ((1 << k) & mask)
        cost += i * (c[j][k] + c[k][j]);
      else
        cost -= i * (c[j][k] + c[k][j]);
    }
    res = min(res, dp(i + 1, mask | (1 << j)) + cost);
  }
  return memo[i][mask] = res;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  memset(memo, -1, sizeof(memo));
  for (int i = 1; i <= n; i++) cin >> s[i];
  for (int i = 1; i <= n - 1; i++) {
    if (s[i] == s[i + 1]) continue;
    c[s[i] - 97][s[i + 1] - 97]++;
  }
  cout << dp(1, 0);
}
