#include <algorithm>
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
// 比较函数,用于稳定排序
bool comper(const pair<string, int>& word1, const pair<string, int>& word2) {
return word1.second > word2.second;
}
int main() {
string str;
map<string, int> word_count;
// 获取整行输入
getline(cin, str);
str[0] += 32;
size_t pos = 0, prev = 0;
// 通过空格分割字符串
while ((pos = str.find(' ', prev)) != string::npos) {
string word = str.substr(prev, pos - prev);
if (!word.empty()) {
word_count[word]++;
}
prev = pos + 1;
}
// 处理最后一个单词
string last_word = str.substr(prev, str.size() - 1 - prev);
if (!last_word.empty()) {
word_count[last_word]++;
}
// 将map中的元素拷贝到vector中
vector<pair<string, int>> sorted_words(word_count.begin(), word_count.end());
// 按照出现次数进行排序
stable_sort(sorted_words.begin(), sorted_words.end(), comper);
// 输出排序结果
for (const auto& entry : sorted_words) {
cout << entry.first << ":" << entry.second << endl;
}
return 0;
}