#include <bits/stdc++.h>
using namespace std;
struct cc {
char c;
bool ischange;
};
int main() {
string s;
while (getline(cin, s)) {
vector<cc> v;
cc ccc;
//首先将输入的字符中的大小写字母存进v
for (int i = 0; i < s.length(); i++) {
if (islower(s[i]) || isupper(s[i])) {
//判断一下是大写还是小写
//是小写,做个标记后转为大写
if (islower(s[i])) {
ccc.c = char(s[i] - 'a' + 'A');
ccc.ischange = 1; //是从小写变成的大写
}
//大写,正常处理
else {
ccc.c = s[i];
ccc.ischange = 0;
}
v.push_back(ccc);
}
}
//根据大写字母ascii码升序排序
stable_sort(v.begin(), v.end(), [](const cc & a, const cc & b) {
return a.c < b.c;
});
int index = 0;
//再次扫描字符串
for (int i = 0; i < s.length(); i++) {
if (islower(s[i]) || isupper(s[i])) {
//如果是由小写变成大写的
if (v[index].ischange == 1) {
cout << char(v[index].c - 'A' + 'a'); //转回小写
} else cout << v[index].c;
index++;
} else cout << s[i];
}
cout << endl;
}
}
// 64 位输出请用 printf("%lld")