const rl = require("readline").createInterface({
input: process.stdin,
output: process.stdout,
});
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
while ((line = await readline())) {
// 1.合并
// 2.排序(按奇偶位置)
let targetStr = "";
const [str1, str2] = line.split(" ");
const arr = (str1 + str2).split("");
let arr1 = arr.filter((item, i) => i % 2 == 0).sort();
let arr2 = arr.filter((item, i) => i % 2 == 1).sort();
arr.forEach((item, index) => {
if (index % 2 == 0) {
targetStr += arr1.shift(0);
} else {
targetStr += arr2.shift(0);
}
});
// 3.字符串转换(十六进制换成十进制,再转成2进制,再倒序,转成10进制,再转成16进制,再转成大写)
let targetArr = targetStr.split("");
let result = [];
for (let i = 0; i < targetArr.length; i++) {
let item = targetArr[i];
let finalStr = item;
if (/[0-9|a-f|A-F]/.test(item)) {
let num = parseInt(item, 16)
.toString(2)
.padStart(4, 0)
.split("")
.reverse()
.join("");
const tempItem = parseInt(num, 2);
// 大于等于10 转16进制
if (tempItem >= 10) {
finalStr = String.fromCharCode(tempItem + 55);
} else {
finalStr = String(tempItem);
}
}
result.push(finalStr);
}
console.log(result.join(""));
}
})();