#include <iostream>
#include <vector>
#include <string>
#include <bits/stdc++.h>
using namespace std;
string str,str1,str2,s1;
string brev(string b){
    string s="";
    for(int i=3;i>=0;i--){
        s+=b[i];
    }
    return s;
}
int main() {
    cin >>str1>>str2;
    str=str1+str2;
    int len=str.size();
    str1="";
    str2="";
    for(int i=0;i<str.size();i+=2){
        str1+=str[i];
    }
     for(int i=1;i<str.size();i+=2){
        str2+=str[i];
    }
    sort(str1.begin(),str1.end());
    sort(str2.begin(),str2.end());
    int j=0;
   for(int i=0;i<str.size();i+=2){
        str[i]=str1[j];j++;
    }
    j=0;
     for(int i=1;i<str.size();i+=2){
         str[i]=str2[j];j++;
    }
   
    int coun=0;
    for(int i=0;i<len;i++){
        
        if(str[i]>='0'&&str[i]<='9'){
            int num1=str[i]-'0';
            bitset<4> b1(num1);
           string  m1=brev(b1.to_string());
            int oc=0;
           for(int x=0;x<m1.size();x++){
                if(m1[x]=='1'){
                    oc+=pow(2,3-x);
                }
           }
           cout<<hex<<uppercase<<oc;
            
        }else if(str[i]>='a'&&str[i]<='f'){
            int num2=str[i]-'a'+10;
            bitset<4> b2(num2);
           string  m2=brev(b2.to_string());
           int oc=0;
           for(int x=0;x<m2.size();x++){
                if(m2[x]=='1'){
                    oc+=pow(2,3-x);
                }
           }
           cout<<hex<<uppercase<<oc;
           
        }else if(str[i]>='A'&&str[i]<='F'){
            int num3=str[i]-'A'+10;
            bitset<4> b3(num3);
           string  m3=brev(b3.to_string());
          int oc=0;
           for(int x=0;x<m3.size();x++){
                if(m3[x]=='1'){
                    oc+=pow(2,3-x);
                }
           }
           cout<<hex<<uppercase<<oc;
           
        }else{
            cout<<str[i];
        }
    }
    
    
}
// 64 位输出请用 printf("%lld")