#include <unordered_map>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
stringstream f("Мама мыла мыла раму");
string word;
unordered_map<string, size_t> dict;
while (f >> word) ++dict[word];
vector<pair<string, int> > res;
res.reserve(dict.size());
copy(dict.begin(), dict.end(), back_inserter(res));
sort(res.begin(), res.end(), [](const auto & a, const auto & b) {return a.second > b.second;});
for (auto & w_c : res) cout << w_c.first << " : " << w_c.second << endl;
return 0;
}
I2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBzdHJpbmdzdHJlYW0gZigi0JzQsNC80LAg0LzRi9C70LAg0LzRi9C70LAg0YDQsNC80YMiKTsKICAgIHN0cmluZyB3b3JkOwogICAgdW5vcmRlcmVkX21hcDxzdHJpbmcsIHNpemVfdD4gZGljdDsKICAgIHdoaWxlIChmID4+IHdvcmQpICsrZGljdFt3b3JkXTsKICAgIHZlY3RvcjxwYWlyPHN0cmluZywgaW50PiA+IHJlczsKICAgIHJlcy5yZXNlcnZlKGRpY3Quc2l6ZSgpKTsKICAgIGNvcHkoZGljdC5iZWdpbigpLCBkaWN0LmVuZCgpLCBiYWNrX2luc2VydGVyKHJlcykpOwogICAgc29ydChyZXMuYmVnaW4oKSwgcmVzLmVuZCgpLCBbXShjb25zdCBhdXRvICYgYSwgY29uc3QgYXV0byAmIGIpIHtyZXR1cm4gYS5zZWNvbmQgPiBiLnNlY29uZDt9KTsKICAgIGZvciAoYXV0byAmIHdfYyA6IHJlcykgY291dCA8PCB3X2MuZmlyc3QgPDwgIiA6ICIgPDwgd19jLnNlY29uZCA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=