#include <stdio.h>
#include <string.h>
void stepthree(char *c) {
    int num;
    if(*c >= '0' && *c <= '9') {
        num = *c - '0';
    } else if (*c >= 'a' && *c <= 'f') {
        num = *c - 'a' + 10;
    } else if (*c >= 'A' && *c <= 'F') {
        num = *c - 'A' + 10;
    } else {
        return;
    }
    // printf("转换后的十进制数是%d\n", num);
    int binary[4];
    for(int i = 0; i < 4; i++) {
        binary[i] = num % 2;
        num /= 2;
    }

    int newnum = 0;
    for(int i = 0; i < 4; i++) {
        newnum = newnum * 2 + binary[i];
    }

    if(newnum >= 0 && newnum <= 9) {
        *c = newnum + '0';
    } else if (newnum > 9 && newnum <= 15) {
        *c = newnum - 10 + 'A';
    }
}

int main() {
    char str1[201], str2[101];
    while (scanf("%s %s", str1, str2) != EOF) {
        // 第一步
        strcat(str1, str2);
        // 第二步
        int len = strlen(str1);
        for(int i = 0; i < len; i = i + 2) {
            if(i >= len) break;
            for(int j = i + 2; j < len; j = j + 2) {
                if(j >= len) break;
                if(str1[j] < str1[i]) {
                    int temp = str1[j];
                    str1[j] = str1[i];
                    str1[i] = temp;
                }
            }
        }
        for(int i = 1; i < len; i = i + 2) {
            if(i >= len) break;
            for(int j = i + 2; j < len; j = j + 2) {
                if(j >= len) break;
                if(str1[j] < str1[i]) {
                    int temp = str1[j];
                    str1[j] = str1[i];
                    str1[i] = temp;
                }
            }
        }
        // 第三步
        for(int i = 0; i < len; i++) {
            stepthree(&str1[i]);
        }
        printf("%s\n", str1);
    }
    return 0;
}