#include <bits/stdc++.h>
using namespace std;
const int M = 20;
int n, m, g[M][M], dp[(1 << M + 1) + 1], deg[M], ans[M][(1 << M) + 1];
string s;
int dfs(int x, int mask) {
  if (ans[x][mask] >= 0) return ans[x][mask];
  ans[x][mask] = 0;
  int c = mask;
  for (int i = 0; i < M; i++) {
    if (c % 2 && i != x) {
      ans[x][mask] = g[x][i] + dfs(x, mask - (1 << i));
      return ans[x][mask];
    }
    c /= 2;
  }
  return ans[x][mask];
}
int solve(int mask, int sz) {
  int c = mask;
  if (dp[mask] >= -1e8) return dp[mask];
  dp[mask] = 1e8;
  for (int i = 0; i < M; i++) {
    if (c % 2) {
      int anss = dfs(i, mask);
      anss = (deg[i] - anss * 2) * -1;
      dp[mask] = min(dp[mask], solve(mask - (1 << i), sz - 1) + anss * sz);
      ;
    }
    c /= 2;
  }
  return dp[mask];
}
int main() {
  cin >> n >> m;
  cin >> s;
  for (int i = 0; i < n - 1; i++)
    if (s[i] != s[i + 1]) {
      g[s[i] - 'a'][s[i + 1] - 'a']++;
      g[s[i + 1] - 'a'][s[i] - 'a']++;
      deg[s[i] - 'a']++;
      deg[s[i + 1] - 'a']++;
    }
  for (int i = 1; i < (1 << M); i++) dp[i] = -1e9;
  for (int i = 0; i < M; i++)
    for (int j = 0; j < (1 << M); j++) ans[i][j] = -1;
  cout << solve((1 << M) - 1, M);
}
