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);
}
}()