//JZLICZ-Zliczacz liter_Mariusz_Tryba
#include <iostream>
#include <string>
using namespace std;
int main()
{
//sumowanie linijek do jednego stringa napis
string napis,sklad;
//napis.clear(),sklad.clear();
int t=0;//cout<<'\a';
cin>>t;
for(int i=0; i<=t; i++)
{
getline(cin,sklad); //getline(cin,sklad);
napis+=sklad;
//sklad.clear();
//cin.ignore();
//cin.get();
}
cout<<napis<<endl;
//wykasowanie spacji
for (unsigned int i=0; i<napis.length()-1; i++)
{
if(napis[i]==' ')
napis.erase(i,1);
}
string litery="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int licznik=0;
//podwojna petla oblicza ilosc wystapien kazdej z liter
//i wypisuje je kiedy wystapily wiecej niz 0 razy
for(unsigned int j=0; j<litery.length()-1; j++)
{
for(unsigned int i=0; i<napis.length()-1; i++)
{
if(napis[i]==litery[j])
licznik++;
}
if (licznik!=0)
{
cout<<litery[j]<<" "<<licznik<<endl;
//cout<<'\a';
licznik=0;
}
}
return 0;
}
Ly9KWkxJQ1otWmxpY3phY3ogbGl0ZXJfTWFyaXVzel9UcnliYQojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIC8vc3Vtb3dhbmllIGxpbmlqZWsgZG8gamVkbmVnbyBzdHJpbmdhIG5hcGlzCgogICAgc3RyaW5nIG5hcGlzLHNrbGFkOwogICAgLy9uYXBpcy5jbGVhcigpLHNrbGFkLmNsZWFyKCk7CiAgICBpbnQgdD0wOy8vY291dDw8J1xhJzsKICAgIGNpbj4+dDsKICAgIGZvcihpbnQgaT0wOyBpPD10OyBpKyspCiAgICB7CiAgICAgICAgZ2V0bGluZShjaW4sc2tsYWQpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0bGluZShjaW4sc2tsYWQpOwogICAgICAgIG5hcGlzKz1za2xhZDsKICAgICAgICAvL3NrbGFkLmNsZWFyKCk7CiAgICAgICAgLy9jaW4uaWdub3JlKCk7CiAgICAgICAgLy9jaW4uZ2V0KCk7CiAgICB9CiAgICBjb3V0PDxuYXBpczw8ZW5kbDsKCiAgICAvL3d5a2Fzb3dhbmllIHNwYWNqaQoKICAgIGZvciAodW5zaWduZWQgaW50IGk9MDsgaTxuYXBpcy5sZW5ndGgoKS0xOyBpKyspCiAgICB7CiAgICAgICAgaWYobmFwaXNbaV09PScgJykKICAgICAgICAgICAgbmFwaXMuZXJhc2UoaSwxKTsKICAgIH0KCiAgICBzdHJpbmcgbGl0ZXJ5PSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsKCiAgICBpbnQgbGljem5paz0wOwoKICAgIC8vcG9kd29qbmEgcGV0bGEgb2JsaWN6YSBpbG9zYyB3eXN0YXBpZW4ga2F6ZGVqIHogbGl0ZXIKICAgIC8vaSB3eXBpc3VqZSBqZSBraWVkeSB3eXN0YXBpbHkgd2llY2VqIG5peiAwIHJhenkKCiAgICBmb3IodW5zaWduZWQgaW50IGo9MDsgajxsaXRlcnkubGVuZ3RoKCktMTsgaisrKQogICAgewogICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaT0wOyBpPG5hcGlzLmxlbmd0aCgpLTE7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKG5hcGlzW2ldPT1saXRlcnlbal0pCiAgICAgICAgICAgICAgICBsaWN6bmlrKys7CiAgICAgICAgfQogICAgICAgIGlmIChsaWN6bmlrIT0wKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8bGl0ZXJ5W2pdPDwiICI8PGxpY3puaWs8PGVuZGw7CiAgICAgICAgICAgIC8vY291dDw8J1xhJzsKICAgICAgICAgICAgbGljem5paz0wOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9