#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ii pair<ll,ll>
#define vi vector<ll>
#define pb push_back
#define all(s) s.begin(), s.end()
#define fi first
#define se second
const int N=(1<<20);
const ll Mod=1e9+7, oo=1e18;
int n, m, dp[N+5], f[25][25];
string s;
signed main()
{
//Nothing beats a Jet-2 Holiday!
//And right now, you can save 50 pounds per person.
//That's 200 pounds for a family of 4!
freopen("keyboard.inp", "r", stdin); freopen("keyboard.out", "w", stdout);
ios_base::sync_with_stdio(NULL), cin.tie(NULL), cout.tie(NULL);
cin>>n>>m>>s;
for(int i=0; i+1<s.size(); i++)
f[s[i]-'a'][s[i+1]-'a']++, f[s[i+1]-'a'][s[i]-'a']++;
fill(dp+1, dp+(1<<m), 1e9);
for(int msk=1; msk<(1<<m); msk++) {
int pos=__builtin_popcount(msk);
for(int i=0; i<m; i++) if((msk>>i)&1) {
int mask=msk^(1<<i), c=dp[mask];
for(int j=0; j<m; j++) if(j!=i) {
if((msk>>j)&1) c+=f[i][j]*pos;
else c-=f[i][j]*pos;
}
dp[msk]=min(dp[msk], c);
}
}
cout<<dp[(1<<m)-1];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaWkgcGFpcjxsbCxsbD4KI2RlZmluZSB2aSB2ZWN0b3I8bGw+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHMpIHMuYmVnaW4oKSwgcy5lbmQoKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCmNvbnN0IGludCBOPSgxPDwyMCk7CmNvbnN0IGxsIE1vZD0xZTkrNywgb289MWUxODsKaW50IG4sIG0sIGRwW04rNV0sIGZbMjVdWzI1XTsKc3RyaW5nIHM7CnNpZ25lZCBtYWluKCkKewogICAgLy9Ob3RoaW5nIGJlYXRzIGEgSmV0LTIgSG9saWRheSEKICAgIC8vQW5kIHJpZ2h0IG5vdywgeW91IGNhbiBzYXZlIDUwIHBvdW5kcyBwZXIgcGVyc29uLgogICAgLy9UaGF0J3MgMjAwIHBvdW5kcyBmb3IgYSBmYW1pbHkgb2YgNCEKICAgIGZyZW9wZW4oImtleWJvYXJkLmlucCIsICJyIiwgc3RkaW4pOyBmcmVvcGVuKCJrZXlib2FyZC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKE5VTEwpLCBjaW4udGllKE5VTEwpLCBjb3V0LnRpZShOVUxMKTsKICAgIGNpbj4+bj4+bT4+czsKICAgIGZvcihpbnQgaT0wOyBpKzE8cy5zaXplKCk7IGkrKykgCiAgICAgICAgZltzW2ldLSdhJ11bc1tpKzFdLSdhJ10rKywgZltzW2krMV0tJ2EnXVtzW2ldLSdhJ10rKzsKICAgIGZpbGwoZHArMSwgZHArKDE8PG0pLCAxZTkpOwogICAgZm9yKGludCBtc2s9MTsgbXNrPCgxPDxtKTsgbXNrKyspIHsKICAgICAgICBpbnQgcG9zPV9fYnVpbHRpbl9wb3Bjb3VudChtc2spOwogICAgICAgIGZvcihpbnQgaT0wOyBpPG07IGkrKykgaWYoKG1zaz4+aSkmMSkgewogICAgICAgICAgICBpbnQgbWFzaz1tc2teKDE8PGkpLCBjPWRwW21hc2tdOwogICAgICAgICAgICBmb3IoaW50IGo9MDsgajxtOyBqKyspIGlmKGohPWkpIHsKICAgICAgICAgICAgICAgIGlmKChtc2s+PmopJjEpIGMrPWZbaV1bal0qcG9zOyAKICAgICAgICAgICAgICAgIGVsc2UgYy09ZltpXVtqXSpwb3M7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZHBbbXNrXT1taW4oZHBbbXNrXSwgYyk7CiAgICAgICAgfQogICAgfQogICAgY291dDw8ZHBbKDE8PG0pLTFdOwogICAgcmV0dXJuIDA7Cn0=