#include <iostream>
#include <type_traits>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

int main() {
    // 输入
    string a, b;
    cin >> a;
    cin >> b;

    string s;
    s = a+b;

    // 第一步:奇偶分开排序
     
    vector<char> vj;
    vector<char> vo;
    for (int i = 0; i < s.length(); i++)
    {
        if (i % 2 == 0)
            vo.push_back(s[i]);
        else
            vj.push_back(s[i]);
    }
    sort(vj.begin(), vj.end());
    sort(vo.begin(), vo.end());

    // 第二步:排序
    string result;
    for (int i = 0; i < s.length(); i++)
    {
        if (i % 2 == 0)
            result += vo[i/2];
        else
            result += vj[(i-1)/2];
    }
    // 第三步:加密
    map<char,char> m= {
        {'0', '0'}, {'1', '8'}, {'2', '4'}, {'3', 'C'},
        {'4', '2'}, {'5', 'A'}, {'6', '6'}, {'7', 'E'},
        {'8', '1'}, {'9', '9'}, {'A', '5'}, {'B', 'D'},
        {'C', '3'}, {'D', 'B'}, {'E', '7'}, {'F', 'F'},
        {'a', '5'}, {'b', 'D'},
        {'c', '3'}, {'d', 'B'}, {'e', '7'}, {'f', 'F'}
    };
    for (int i = 0; i < result.length(); i++)
    {
        char c = result[i];
        if (m[c])
            result[i] = m[c];
    }
    
    cout << result;
}
// 64 位输出请用 printf("%lld")