import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
// 第一步
String string = sc.next() + sc.next();
ArrayList<Character> j = new ArrayList<>();
ArrayList<Character> ou = new ArrayList<>();
char[] charArray = string.toCharArray();
for (int i = 0; i < charArray.length; i++) {
if (i % 2 == 0) {
// 添加到偶数集合
ou.add(charArray[i]);
continue;
}
// 奇数
j.add(charArray[i]);
}
// 注意:默认按ascii码进行排序,如C在a前面,D在b前面
Collections.sort(j);
Collections.sort(ou);
// 替换奇偶位置的字符
for (int i = 0, n = 0, m = 0; i < charArray.length; i++) {
if (i % 2 == 0) {
charArray[i] = ou.get(n);
n++;
continue;
}
charArray[i] = j.get(m);
m++;
}
// 第三步:对排序后的字符串中的'0'~'9'、'A'~'F'和'a'~'f'字符,需要进行转换操作
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' &&
c <= 'F')) {
// 从十六进制到十进制
int x = Character.digit(c, 16);
// 从十进制到二进制
String binaryString = Integer.toBinaryString(x);
// 由于十六进制的0~9以及字母都是4位数的二进制,所以转成十六进制后不足4位前面需补0
while (binaryString.length() < 4) {
binaryString = "0" + binaryString;
}
// 反转后的二进制
StringBuilder reverse = new StringBuilder(binaryString).reverse();
// 从二进制到十进制
int newX = Integer.parseInt(reverse.toString(), 2);
// 从十进制到十六进制
char forDigit = Character.forDigit(newX, 16);
// 按题目要求转成大写的
charArray[i] = Character.toUpperCase(forDigit);
}
}
System.out.println(new String(charArray));
}
}
}