/*
思路: 分三个步骤处理
1. 把字符串拼接起来
2. 借助两个vector<int>,对合并后的字符串排序
3. 利用密码对照表实现字符转换 注意使用函数 str.find_last_of()
*/
#include <algorithm>
#include <cctype>
#include <iostream>
#include <vector>
using namespace std;
void mysort(string& str) {
vector<char> v1, v2;
int len = str.length();
for (int i = 0; i < len; ++i) {
if (i % 2) {
v1.push_back(str[i]);
} else {
v2.push_back(str[i]);
}
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
for (int i = 0, i1 = 0, i2 = 0; i < len; ++i) {
if (i % 2) {
str[i] = v1[i1];
i1++;
} else {
str[i] = v2[i2];
i2++;
}
}
}
string a("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
string b("084c2a6e195d3b7fghijklmnopqrstuvwxyz5d3b7fGHIJKLMNOPQRSTUVWXYZ");
void myconvert(string& str) {
int len = str.length();
for (int i = 0; i < len; ++i) {
// 只对字母和数字进行处理。
if ( isalpha(str[i]) || isdigit(str[i]) ){
str[i] = b[a.find_last_of(str[i])];
if ( islower(str[i]) && str[i] <= 'f') {
str[i] = toupper(str[i]);
}
}
}
return;
}
int main() {
string str1, str2;
cin >> str1 >> str2;
// 1. 合并两个字符串
string str = str1 + str2;
// 2. 按奇数位与偶数位排序
mysort(str);
// 3. 对排序后的字符进行转换
myconvert(str);
cout << str << endl;
}
// 64 位输出请用 printf("%lld")