//字符串价值,大顶堆,每次取次数最大值减一,然后调整k次,最后算平方和
int main() {
string s;
int n;
while (cin >> s >> n) {
vector<int> vec(26, 0);
priority_queue<int> pq;
long long res = 0;
for (auto ch : s) {
vec[ch - 'a']++;
}
for (int i = 0; i < 26; ++i) {
if (vec[i] > 0) pq.push(vec[i]);
}
while (n--) {
int num = pq.top(); pq.pop();
pq.push(--num);
}
while (!pq.empty()) {
int num = pq.top(); pq.pop();
res += num * num;
}
cout << res << endl;
}
return 0;
}