#include <stdio.h>
#include <string.h>
struct Hash {
char ch;
int n;
} hash[36];
void init() {
int i;
for (i = 0; i < 26; i++) {
hash[i].ch = 'a' + i;
hash[i].n = 0;
}
for (i = 26; i < 36; i++) {
hash[i].ch = '0' + i - 26;
hash[i].n = 0;
}
}
int cmp(const struct Hash* a, const struct Hash* b) {
int cha = (b->n) - (a->n);
if(cha !=0 ) return cha;
else{
cha = (a->ch) - (b->ch);
return cha;
}
}
/*
思路就是把所有小写字母和数字放在一个hash表中,然后对其计数
*/
int main() {
init();//初始化hash表
char str[1000];
scanf("%s[^\n]", str);
int len, i, j;
len = strlen(str);
for (i = 0; i < len; i++) {
for (j = 0; j < 36; j++) {
if (hash[j].ch == str[i]) {
(hash[j].n)++;
break;
}
}
}//对每个字符计数
qsort(hash, 36, sizeof(hash[0]), cmp);//按要求进行排序
//for(i=0;i<36;i++){
// if(i%10 == 0) printf("\n");
// printf("%c%2d ||",hash[i].ch,hash[i].n);
//}//调试用
i = 0;
while (hash[i].n != 0) {
printf("%c", hash[i].ch);
i++;
}
return 0;
}