#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

struct Node
{
    char c;
    unsigned cnt;
};

bool cmp(Node a, Node b)
{
    if(a.cnt != b.cnt) return a.cnt > b.cnt;
    else return a.c < b.c;
}

int main()
{
    string str;
    unsigned hashTable[200];
    while(cin >> str)
    {
        memset(hashTable, 0, sizeof(hashTable));
        for(auto it = str.begin(); it != str.end(); ++it)
        {
            hashTable[*it]++;
        }
        vector<Node> vec;
        Node node;
        for(char i = '0'; i <= 'z'; ++i)
        {
            if(!hashTable[i]) continue;
            node.c = i;
            node.cnt = hashTable[i];
            vec.push_back(node);
        }
        sort(vec.begin(), vec.end(), cmp);
        for(Node a : vec)
        {
            cout << a.c;
        }
        cout << endl;
    }

    return 0;
}