const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let obj={};
        let str_arr = line.split('');
        for(let i=0; i<str_arr.length; i++){
            if(obj[str_arr[i]] == undefined){
                obj[str_arr[i]] = 1;
            }else{
                obj[str_arr[i]]++;
            }
        }
        let m_set = new Set([...Object.values(obj)]);   // 次数去重
        let m_arr = Array.from(m_set).sort((a,b)=>b-a); // 次数降序,从多到少
        let str = '';
        for(let j=0;j<m_arr.length; j++){
            let same_times_c_arr = [];
            for(key in obj){
                if(obj[key] == m_arr[j]){
                    same_times_c_arr.push(key);
                }
            }
            if(same_times_c_arr.length == 1){ // 只有一个字母
                str += same_times_c_arr[0];
            }else{  // 有多个字母
                let unicode_arr = same_times_c_arr.map(item=>{  // 字符先转换为Unicode码
                    return item.charCodeAt();
                });
                unicode_arr = unicode_arr.sort((a,b)=>a-b); // unicode 升序排序
                unicode_arr = unicode_arr.map(item=>{   // Unicode码再转换为字符
                    return String.fromCharCode(item);
                });
                let sorted_str = unicode_arr.join('');
                str+=sorted_str;    // 字符串拼接
            }
        }
        console.log(str);
    }
}()