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(""));
    }
})();