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

int main(){
    // 字典法
    char Input[] = {"0123456789abcdefABCDEF"};
    char Output[] = {"084C2A6E195D3B7F5D3B7F"};
    string s,t,u;
    cin>>s>>t; // 以空格为间隔
    u = s + t; // 合并为一个字符串
    // u中的奇数位置和偶数位置各自按照Ascii码从大到小排序
    // 空间换时间,各自抽出新的
    string newS,newT,newU;
    for(int i = 0; i < u.length(); ++i){
        if(i % 2 == 0){
            // 偶数位置
            newT += u[i];
        }else{
            // 奇数位置
            newS += u[i];
        }
    }
    // 各自排序
    std::sort(newS.begin(),newS.end());
    std::sort(newT.begin(),newT.end());

    // 将其合并得到新的newU
    int i = 0, k = 0;
    while(i < newS.length() && k < newT.length()){
        // 先i后k
        newU += newT[k++];
        newU += newS[i++];
    }
    if(i < newS.length()){
        newU += newS[i];
    }
    if(k < newT.length()){
        newU += newT[k];
    }
    // 输出测试
    // cout<<newU<<endl;
    // 调整阶段
    for(int i = 0; i < newU.length(); ++i){
        // 如果不是十六进制字符,即不为0-9,a-f,A-F,则直接追加到结果中
        if(newU[i] >= '0' && newU[i] <= '9'){
            newU[i] = Output[newU[i] - '0'];
        }else if(newU[i] >= 'a' && newU[i] <= 'f'){
            newU[i] = Output[newU[i] - 'a' + 10];
        }else if(newU[i] >= 'A' && newU[i] <= 'F'){
            newU[i] = Output[newU[i] - 'A' + 16];
        }
    }
    // 输出
    cout<<newU<<endl;
}