#include <iostream>
using namespace std;
string int_to_string(int liczba)
{
string zwracany;
if(liczba<10)
zwracany = char(liczba+48);
else if(liczba>=10 && liczba<100)
{
string pomocniczy;
zwracany = char(((liczba/10)%10)+48);
pomocniczy = char((liczba%10)+48);
zwracany += pomocniczy;
}
else
{
return "Jestesmy poza zakresem funkcji...";
}
return zwracany;
}
int main()
{
int testAmount;
cin>>testAmount;
string slowa[testAmount];
for(int i = 0 ; i<testAmount ; i++)
{
cin.clear();
cin.sync();
getline(cin,slowa[i]);
}
//65-90
for(int a = 0 ; a<testAmount ; a++)
{
for(int i = 65 ; i<91 ; i++)
{
size_t found = string::npos, found2 = string::npos;
int licznik = 0;
string pomoc;
pomoc = char(i);
found = slowa[a].find(pomoc);
if(found!=string::npos)
{
found2 = found;
licznik++;
while(found!=string::npos)
{
found = slowa[a].find(pomoc, found+1);
if(found!=string::npos) licznik++;
}
}
if(licznik>2)
{
slowa[a].erase(found2+1,licznik-1);
slowa[a].insert(found2+1,int_to_string(licznik));
}
}
cout<<slowa[a]<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgaW50X3RvX3N0cmluZyhpbnQgbGljemJhKQp7CiAgICBzdHJpbmcgendyYWNhbnk7CiAgICBpZihsaWN6YmE8MTApCiAgICAgICAgendyYWNhbnkgPSBjaGFyKGxpY3piYSs0OCk7CiAgICBlbHNlIGlmKGxpY3piYT49MTAgJiYgbGljemJhPDEwMCkKICAgIHsKICAgICAgICBzdHJpbmcgcG9tb2NuaWN6eTsKICAgICAgICB6d3JhY2FueSA9IGNoYXIoKChsaWN6YmEvMTApJTEwKSs0OCk7CiAgICAgICAgcG9tb2NuaWN6eSA9IGNoYXIoKGxpY3piYSUxMCkrNDgpOwogICAgICAgIHp3cmFjYW55ICs9IHBvbW9jbmljenk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcmV0dXJuICJKZXN0ZXNteSBwb3phIHpha3Jlc2VtIGZ1bmtjamkuLi4iOwogICAgfQogICAgICAgIHJldHVybiB6d3JhY2FueTsKfQppbnQgbWFpbigpCnsKICAgIGludCB0ZXN0QW1vdW50OwogICAgY2luPj50ZXN0QW1vdW50OwogICAgc3RyaW5nIHNsb3dhW3Rlc3RBbW91bnRdOwogICAgZm9yKGludCBpID0gMCA7IGk8dGVzdEFtb3VudCA7IGkrKykKICAgIHsKICAgICAgICBjaW4uY2xlYXIoKTsKICAgICAgICBjaW4uc3luYygpOwogICAgICAgIGdldGxpbmUoY2luLHNsb3dhW2ldKTsKICAgIH0KLy82NS05MAogICAgZm9yKGludCBhID0gMCA7IGE8dGVzdEFtb3VudCA7IGErKykKICAgIHsKICAgICAgICBmb3IoaW50IGkgPSA2NSA7IGk8OTEgOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBzaXplX3QgZm91bmQgPSBzdHJpbmc6Om5wb3MsIGZvdW5kMiA9IHN0cmluZzo6bnBvczsKICAgICAgICAgICAgaW50IGxpY3puaWsgPSAwOwogICAgICAgICAgICBzdHJpbmcgcG9tb2M7CiAgICAgICAgICAgIHBvbW9jID0gY2hhcihpKTsKICAgICAgICAgICAgZm91bmQgPSBzbG93YVthXS5maW5kKHBvbW9jKTsKICAgICAgICAgICAgaWYoZm91bmQhPXN0cmluZzo6bnBvcykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm91bmQyID0gZm91bmQ7CiAgICAgICAgICAgICAgICBsaWN6bmlrKys7CiAgICAgICAgICAgICAgICB3aGlsZShmb3VuZCE9c3RyaW5nOjpucG9zKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGZvdW5kID0gc2xvd2FbYV0uZmluZChwb21vYywgZm91bmQrMSk7CiAgICAgICAgICAgICAgICAgICAgaWYoZm91bmQhPXN0cmluZzo6bnBvcykgbGljem5paysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGxpY3puaWs+MikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2xvd2FbYV0uZXJhc2UoZm91bmQyKzEsbGljem5pay0xKTsKICAgICAgICAgICAgICAgIHNsb3dhW2FdLmluc2VydChmb3VuZDIrMSxpbnRfdG9fc3RyaW5nKGxpY3puaWspKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0PDxzbG93YVthXTw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9