#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define iii pair<int, ii>
#define fi first
#define se second
#define inf 10000000000000000
int n, m;
string s;
int ts[30][30];
int f[(1<<20)+5];
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
if(fopen("main.inp","r")) {
freopen("main.inp", "r", stdin);
freopen("main.out", "w", stdout);
}
cin >> n >> m;
cin >> s;
for(int i = 1; i < n; i++) {
int kt = s[i]-'a';
int kt2 = s[i-1] - 'a';
ts[kt][kt2]++;
ts[kt2][kt]++;
}
for(int i = 1; i < (1<<m); i++) f[i] = inf;
for(int mask = 0; mask < (1<<m); mask++) {
for(int i = 0; i < m; i++) {
if(mask & (1<<i)) {
int val = 0;
int z = __builtin_popcount(mask);
for(int j = 0; j < m; j++) {
if(j != i) {
if(mask & (1<<j)) val += z*ts[i][j];
else val -= z*ts[i][j];
}
}
f[mask] = min(f[mask],f[mask^(1<<i)] + val);
}
}
}
cout << f[(1<<m)-1];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBpaWkgcGFpcjxpbnQsIGlpPgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgaW5mIDEwMDAwMDAwMDAwMDAwMDAwCmludCBuLCBtOwpzdHJpbmcgczsKaW50IHRzWzMwXVszMF07CmludCBmWygxPDwyMCkrNV07CnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGlmKGZvcGVuKCJtYWluLmlucCIsInIiKSkgewogICAgICAgIGZyZW9wZW4oIm1haW4uaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigibWFpbi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4gPj4gbiA+PiBtOwogICAgY2luID4+IHM7CiAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IGt0ID0gc1tpXS0nYSc7CiAgICAgICAgaW50IGt0MiA9IHNbaS0xXSAtICdhJzsKICAgICAgICB0c1trdF1ba3QyXSsrOwogICAgICAgIHRzW2t0Ml1ba3RdKys7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxOyBpIDwgKDE8PG0pOyBpKyspIGZbaV0gPSBpbmY7CiAgICBmb3IoaW50IG1hc2sgPSAwOyBtYXNrIDwgKDE8PG0pOyBtYXNrKyspIHsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgICAgIGlmKG1hc2sgJiAoMTw8aSkpIHsKICAgICAgICAgICAgICAgIGludCB2YWwgPSAwOwogICAgICAgICAgICAgICAgaW50IHogPSBfX2J1aWx0aW5fcG9wY291bnQobWFzayk7CiAgICAgICAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoaiAhPSBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1hc2sgJiAoMTw8aikpIHZhbCArPSB6KnRzW2ldW2pdOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHZhbCAtPSB6KnRzW2ldW2pdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZbbWFza10gPSBtaW4oZlttYXNrXSxmW21hc2teKDE8PGkpXSArIHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGZbKDE8PG0pLTFdOwogICAgcmV0dXJuIDA7Cn0=