import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String line = reader.readLine();
        line = stage1(line);
        line = stage2(line);
        line = stage3(line);
        System.out.println(line);
    }

    // 第一步:将输入的两个字符串str1和str2进行前后合并。
    public static String stage1(String line) {
        return line.replace(" ", "");
    }

    // 第二步:对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。
    public static String stage2(String line) {
        int length = line.length();
        char[] evens = new char[length % 2 == 0 ? length / 2 : length / 2 + 1];
        char[] odds = new char[length / 2];
            for (int i = 0; i < length; ++i) {
                if (i % 2 == 0) {
                    evens[i / 2] = line.charAt(i);
                } else {
                    odds[i / 2] = line.charAt(i);
                }
            }
        Arrays.sort(evens);
        Arrays.sort(odds);
        
        char[] merge = new char[length];
        for (int i = 0; i < merge.length; ++i) {
            if (i % 2 == 0) {
                merge[i] = evens[i / 2];
            } else {
                merge[i] = odds[i / 2];
            }
        }

        return new String(merge);
    }

    /**
     *   第三步:对排序后的字符串中的'0'~'9'、'A'~'F'和'a'~'f'字符,需要进行转换操作。
     *   转换规则@see translate
     */  
    public static String stage3(String line) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < line.length(); ++i) {
            sb.append(translate(line.charAt(i)));
        }
        return sb.toString();
    }

    //  转换规则如下:
    //  对以上需要进行转换的字符所代表的十六进制用二进制表示并倒序;
    //  然后再转换成对应的十六进制大写字符(注:字符 a~f 的十六进制对应十进制的10~15,大写同理)。
    public static char translate(char ascii) {
        if (ascii >= 'a' && ascii <= 'f') {
            return Character.toUpperCase(Character.forDigit(transform(ascii), 16));
        }

        if (ascii >= 'A' && ascii <= 'F') {
            return Character.toUpperCase(Character.forDigit(transform(ascii), 16));
        }

        if (ascii >= '0' && ascii <= '9') {
            return Character.toUpperCase(Character.forDigit(transform(ascii), 16));
        }
        return ascii;
    }

    private static int transform(char ascii) {
        int x = Character.digit(ascii, 16);
        int r = 0;
        for (int i = 0; i < 4; ++i) {
            r |= (x & 0x01);
            x >>= 1;
            if (i < 3) r <<= 1;
        }
        return r;
    }
}