#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")