/*
The idea here is that to get the overall maximum beauty of the string you must assign
maximum beauty possible(26) to the most frequent alphabet and then 25 to the second most
frequent alphabet and so on.
And yes, in the code, sweetness and beauty means the same.
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<climits>
#include<vector>
#include<iterator>
#include<set>
#define fr(i,a,b) for(int i=a; i<b; i++)
#define s(a) scanf("%d", &a)
#define p(a) printf("%d\n", a)
#define w(t) while(t--)
#define pb push_back
#define CLR(a) memset(a, 0, sizeof(a))
using namespace std;
typedef long long int lli;
typedef vector<int> VI;
typedef vector<string> VS;
int sweetness[26];
pair<char, int> frequency[26];
bool cmp(pair<char, int> p, pair<char, int> q) {
return p.second < q.second;
}
int main() {
int test;
scanf("%d\n", &test);
fr(t,1,test+1) {
string s;
getline(cin, s);
string small;
int len = s.length();
CLR(frequency);
CLR(sweetness);
// Initialize frequency[].first with a, b, c, ..., z.
fr(i,0,26)
frequency[i].first = 97+i;
fr(i,0,len) {
/* as the beauty for both uppercase and lowercase characters are same
so lets first convert all characters to lowercase
*/
small[i] = tolower(s[i]);
/* Sorry punctuation marks, you're not beautiful
as only alphabets have got some beauty, so
we skip punctuations and spaces
*/
if(small[i]==' '||ispunct(small[i]))
continue;
// and we increment the frequency of this particular alphabet
frequency[small[i]-'a'].second++;
}
// Sort the frequency[] according to frequency[].second
sort(frequency, frequency+26, cmp);
// Assign max sweetness to the most frequent alphabet and so on...
for(int i=26; i>0; --i)
sweetness[frequency[i-1].first - 'a'] = i;
int ans = 0;
fr(i,0,len) {
if(small[i] == ' ' || ispunct(small[i]))
continue;
ans += sweetness[small[i]-'a'];
}
cout<<ans<<endl;
}
return 0;
}
LyoKVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHRvIGdldCB0aGUgb3ZlcmFsbCBtYXhpbXVtIGJlYXV0eSBvZiB0aGUgc3RyaW5nIHlvdSBtdXN0IGFzc2lnbgptYXhpbXVtIGJlYXV0eSBwb3NzaWJsZSgyNikgdG8gdGhlIG1vc3QgZnJlcXVlbnQgYWxwaGFiZXQgYW5kIHRoZW4gMjUgdG8gdGhlIHNlY29uZCBtb3N0CmZyZXF1ZW50IGFscGhhYmV0IGFuZCBzbyBvbi4KQW5kIHllcywgaW4gdGhlIGNvZGUsIHN3ZWV0bmVzcyBhbmQgYmVhdXR5IG1lYW5zIHRoZSBzYW1lLgoqLwogCiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8Y3N0ZGxpYj4KI2luY2x1ZGU8Y2N0eXBlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8Y2xpbWl0cz4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxpdGVyYXRvcj4KI2luY2x1ZGU8c2V0PgogCiNkZWZpbmUgZnIoaSxhLGIpIGZvcihpbnQgaT1hOyBpPGI7IGkrKykKI2RlZmluZSBzKGEpIHNjYW5mKCIlZCIsICZhKQojZGVmaW5lIHAoYSkgcHJpbnRmKCIlZFxuIiwgYSkKI2RlZmluZSB3KHQpIHdoaWxlKHQtLSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBDTFIoYSkgbWVtc2V0KGEsIDAsIHNpemVvZihhKSkKIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbGk7CnR5cGVkZWYgdmVjdG9yPGludD4gVkk7CnR5cGVkZWYgdmVjdG9yPHN0cmluZz4gVlM7CiAKaW50IHN3ZWV0bmVzc1syNl07CnBhaXI8Y2hhciwgaW50PiBmcmVxdWVuY3lbMjZdOwogCmJvb2wgY21wKHBhaXI8Y2hhciwgaW50PiBwLCBwYWlyPGNoYXIsIGludD4gcSkgewogICAgcmV0dXJuIHAuc2Vjb25kIDwgcS5zZWNvbmQ7Cn0KIAppbnQgbWFpbigpIHsKCWludCB0ZXN0OwoJc2NhbmYoIiVkXG4iLCAmdGVzdCk7Cglmcih0LDEsdGVzdCsxKSB7CgkJc3RyaW5nIHM7CgkJZ2V0bGluZShjaW4sIHMpOwoJCXN0cmluZyBzbWFsbDsKCQlpbnQgbGVuID0gcy5sZW5ndGgoKTsKCQlDTFIoZnJlcXVlbmN5KTsKCQlDTFIoc3dlZXRuZXNzKTsKICAgICAgICAJLy8gSW5pdGlhbGl6ZSBmcmVxdWVuY3lbXS5maXJzdCB3aXRoIGEsIGIsIGMsIC4uLiwgei4KCQlmcihpLDAsMjYpCgkJCWZyZXF1ZW5jeVtpXS5maXJzdCA9IDk3K2k7CgkJZnIoaSwwLGxlbikgewoJCQkvKiBhcyB0aGUgYmVhdXR5IGZvciBib3RoIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgYXJlIHNhbWUKICAgICAgICAJCSAgIHNvIGxldHMgZmlyc3QgY29udmVydCBhbGwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UKICAgICAgICAJCSovCiAgICAgICAgCQlzbWFsbFtpXSA9IHRvbG93ZXIoc1tpXSk7CiAgICAgICAgCQkvKiBTb3JyeSBwdW5jdHVhdGlvbiBtYXJrcywgeW91J3JlIG5vdCBiZWF1dGlmdWwgCiAgICAgICAgCQkgICBhcyBvbmx5IGFscGhhYmV0cyBoYXZlIGdvdCBzb21lIGJlYXV0eSwgc28gCiAgICAgICAgCQkgICB3ZSBza2lwIHB1bmN0dWF0aW9ucyBhbmQgc3BhY2VzCiAgICAgICAgCQkqLwoJCQlpZihzbWFsbFtpXT09JyAnfHxpc3B1bmN0KHNtYWxsW2ldKSkKCQkJCWNvbnRpbnVlOwoJCQkvLyBhbmQgd2UgaW5jcmVtZW50IHRoZSBmcmVxdWVuY3kgb2YgdGhpcyBwYXJ0aWN1bGFyIGFscGhhYmV0CgkJCWZyZXF1ZW5jeVtzbWFsbFtpXS0nYSddLnNlY29uZCsrOwoJCX0KICAgICAgICAJLy8gU29ydCB0aGUgZnJlcXVlbmN5W10gYWNjb3JkaW5nIHRvIGZyZXF1ZW5jeVtdLnNlY29uZAoJCXNvcnQoZnJlcXVlbmN5LCBmcmVxdWVuY3krMjYsIGNtcCk7CgkJCiAgICAgICAgCS8vIEFzc2lnbiBtYXggc3dlZXRuZXNzIHRvIHRoZSBtb3N0IGZyZXF1ZW50IGFscGhhYmV0IGFuZCBzbyBvbi4uLgogICAgICAgIAlmb3IoaW50IGk9MjY7IGk+MDsgLS1pKQogICAgICAgIAkJc3dlZXRuZXNzW2ZyZXF1ZW5jeVtpLTFdLmZpcnN0IC0gJ2EnXSA9IGk7CgkJaW50IGFucyA9IDA7CgkJZnIoaSwwLGxlbikgewoJCQlpZihzbWFsbFtpXSA9PSAnICcgfHwgaXNwdW5jdChzbWFsbFtpXSkpCiAgICAgICAgICAgICAgIAkJCWNvbnRpbnVlOwoJCQlhbnMgKz0gc3dlZXRuZXNzW3NtYWxsW2ldLSdhJ107CgkJfQoJCWNvdXQ8PGFuczw8ZW5kbDsKCX0KCXJldHVybiAwOwp9