#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    string s;
    getline(cin, s, ' ');
    string t;
    getline(cin, t);
    string str = s + t;
    string odd_str; //下标为奇数的字符组成的字符串,奇数位字符串
    string even_str; //下标为偶数的字符串组成的字符串,偶数位字符串
    //根据字符在合并字符串中的次序,按字典序分奇数位、偶数位独立来排,但次序的奇偶性不变,即原来是奇数位,排序后还是奇数位
    for (int i = 0; i < str.size(); i++) {
        if (i % 2 == 0) {
            odd_str += str[i];
        } else if (i % 2 == 1) {
            even_str += str[i];
        }
    }
    sort(odd_str.begin(), odd_str.end()); //奇排序
    sort(even_str.begin(), even_str.end()); //偶排序
    //将按奇数位、偶数位排序后的字符再填回合并字符串 strOutput
    int j = 0; //奇数位字符串的下标
    int k = 0; //偶数位字符串的下标
    for (int i = 0; i < str.size(); i++) {
        if (i % 2 == 0) {
            str[i] = odd_str[j];
            j++;
        } else if (i % 2 == 1) {
            str[i] = even_str[k];
            k++;
        }
    }
    char Output[] = {"084C2A6E195D3B7F5D3B7F"}; //输出参照字典(数字 + 大写字母)
    //对字符(符合字典 Input[])所代表的 16 进制的数进行 BIT 倒序的操作,并转换为相应的大写字符
    for (int i = 0; i < str.size(); i++) {
        if ((str[i] >= '0') && (str[i] <= '9')) {
            str[i] = Output[str[i] - '0'];
        } else if ((str[i] >= 'a') && (str[i] <= 'f')) {
            str[i] = Output[str[i] - 'a' + 10];
        } else if ((str[i] >= 'A') && (str[i] <= 'F')) {
            str[i] = Output[str[i] - 'A' + 16];
        }
    }
    cout << str << endl;

    return 0;

}
// 64 位输出请用 printf("%lld")