#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;
}