/*
 * 29th April 2012, Luca Risolia
 */

#include <iostream>
#include <string>
#include <map>
#include <utility>

using namespace std;

class Filter {
public:

    class Retry {
    public:

        virtual const char* message() {
            return 0;
        }
    };

    virtual void start() { }
    virtual int read() = 0;

    virtual void write() { }

    virtual void compute() { }
    virtual int result() = 0;

    virtual int retry(Retry& m) {
        cerr << m.message() << '\n';
        return 0;
    }

    virtual ~Filter() { }
};

int main_loop(Filter* p) {
    for (;;) {
        try {
            p->start();
            while (p->read()) {
                p->compute();
                p->write();
            }
            return p->result();
        } catch (Filter::Retry& m) {
            if (int i = p->retry(m))
                return i;
        } catch (...) {
            cerr << "Fatal filter error\n";
            return 1;
        }
    }
}

class WordFreqFilter : public Filter {
    istream& in;
    ostream& out;
    map<string, int> m;
    multimap<int, string> f;

public:

    WordFreqFilter(istream& i, ostream& o) : in(i), out(o) { }

    void start() {
        m.clear();
    }

    int read() {
        string s;
        if (in >> s) {
            m[s]++;
            return 1;
        }
        return 0;
    }

    int result() {
        f.clear();
        for (map<string, int>::const_iterator i = m.begin(); i != m.end(); i++)
            f.insert(make_pair(i->second, i->first));
        for (map<int, string>::const_reverse_iterator i = f.rbegin(); i != f.rend(); i++)
            out << i->second << ": " << i->first << '\n';
        return 0;
    }
};

int main(int argc, char** argv) {
    WordFreqFilter f(cin, cout);
    return main_loop(&f);
}

