贪心
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef __int64 ll;
ll n,k;
int const MAXN = 100010;
char s[MAXN];
struct T{
int x;
ll num;
}has[50];
int cmp(T a,T b){
if(a.num == b.num) return a.x < b.x;
return a.num < b.num;
}
void Out(){
for(int i = 49;i >= 0;i--){
printf("%d %c\n",has[i].num,has[i].x + 'A');
if(has[i].num == 0) break;
}
}
int main(){
cin>>n>>k;
scanf("%s",s);
memset(has,0,sizeof(has));
for(int i = 0;s[i];i++){
int x = s[i] - 'A';
has[x].x = x;
has[x].num++;
}
sort(has,has+50,cmp);
ll ss = 0;
for(int i = 49;i >= 0;i--){
if(!has[i].num) break;
if(k <= has[i].num){
ss += k * k;
k = 0;
}
else{
ss += has[i].num * has[i].num;
k -= has[i].num;
}
if(k <= 0)break;
}
cout<<ss<<endl;
return 0;
}