#include <iostream>
#include <string>
#include <bitset>
#include <algorithm>
#include <cctype>
#include <vector>
using namespace std;
const char hex_table[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char adjust(const char& c) {
int n;
if(isdigit(c)) { //c是'0'-'9'
n = c - '0';
} else if(islower(c)) { //c是小写字母
n = c - 'a' + 10;
} else if(isupper(c)) { //c是大写字母
n = c - 'A' + 10;
}
if(n > 15) return c; //傻逼题目 说好的只输入a-f 测试用例还输入别的
bitset<4> b(n);
string str = b.to_string();
reverse(str.begin(), str.end());
bitset<4> newb(str);
unsigned long ul = newb.to_ulong();
return hex_table[ul];
}
int main() {
string s, t, u;
cin >> s >> t;
u = s + t;
// 分离奇偶索引的元素
vector<char> evenChars; // 偶数索引
vector<char> oddChars; // 奇数索引
for (size_t i = 0; i < u.size(); ++i) {
if (i % 2 == 0) {
evenChars.push_back(u[i]);
} else {
oddChars.push_back(u[i]);
}
}
// 分别排序
sort(evenChars.begin(), evenChars.end());
sort(oddChars.begin(), oddChars.end());
// 合并结果
size_t evenIdx = 0, oddIdx = 0;
for (size_t i = 0; i < u.size(); ++i) {
if (i % 2 == 0) {
u[i] = evenChars[evenIdx++];
} else {
u[i] = oddChars[oddIdx++];
}
}
string ans;
for(const char& c: u) {
ans += adjust(c);
}
cout << ans << endl;
return 0;
}