// 0 1 2 3 4 5 6 7
// 注意:二进制转十进制parseInt(n, 2)
// 注意:这里使用toString(2)转化为二进制,比如1得到'1',但我们需要的是'0001,所以需要特殊处理
// 注意:除了a-fA-F0-9其他的字母不做转化处理
let str = readline().split(' ').join('')
print(fn(str))
function fn(str) {
let s = '', odd = [], even = [], res = ''
for(let i=0; i<str.length; i++) {
if(i%2==0)even.push(str[i])
else odd.push(str[i])
}
odd.sort()
even.sort()
for(let i=0; i<str.length; i++) {
if(i%2==0)s+=even[i/2]
else s+=odd[(i-1)/2]
}
for(let i=0; i<s.length; i++) {
res += change(s[i])
}
return res
}
function change(s) {
if(/[^a-fA-F0-9]/.test(s))return s
let n1 = parseInt(s, 16)
let n2 = handle(n1)
let n3 = parseInt(n2, 2).toString(16).toUpperCase()
return n3
}
function handle(n) {
let a = n.toString(2).split('')
while(a.length<4) {
a.unshift('0')
}
return a.reverse().join('')
}