#include <iostream>
#include <string>
#include <unordered_map>
#include <utility>
using namespace std;
int main () {
unordered_map<string, size_t> cnt;
bool flag = true;
string tmp;
char c;
while(flag) {
if(!(cin>>c)) break;
switch(c) {
case '.': flag = false;
case ',': cnt[tmp] ++; tmp = ""; break;
default: tmp+=c; break;
}
}
for(auto& it: cnt) {
cout << it.first << ' ' << it.second << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHV0aWxpdHk+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAppbnQgbWFpbiAoKSB7CiAgICB1bm9yZGVyZWRfbWFwPHN0cmluZywgc2l6ZV90PiBjbnQ7CiAgICBib29sIGZsYWcgPSB0cnVlOwogICAgc3RyaW5nIHRtcDsKICAgIGNoYXIgYzsKICAgIHdoaWxlKGZsYWcpIHsKICAgICAgICBpZighKGNpbj4+YykpIGJyZWFrOwogICAgICAgIHN3aXRjaChjKSB7CiAgICAgICAgY2FzZSAnLic6IGZsYWcgPSBmYWxzZTsKICAgICAgICBjYXNlICcsJzogY250W3RtcF0gKys7IHRtcCA9ICIiOyBicmVhazsKICAgICAgICBkZWZhdWx0OiB0bXArPWM7IGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGZvcihhdXRvJiBpdDogY250KSB7CiAgICAgICAgY291dCA8PCBpdC5maXJzdCA8PCAnICcgPDwgaXQuc2Vjb25kIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==
YWIsYWIsYmEsYmEsY2NjLGNjYyxhc2RmLg==
ab,ab,ba,ba,ccc,ccc,asdf.