#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")