#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
struct ch {
char c;
int seq;
};
bool compare(ch lhs, ch rhs) {
if (tolower(lhs.c) < tolower(rhs.c)) {
return true;
}
else if (tolower(lhs.c) == tolower(rhs.c) && lhs.seq < rhs.seq) {
return true;
}
else {
return false;
}
}
int main() {
string s;
while (getline(cin, s)) {
vector<ch> str;
set<int> isletter;
for (int i = 0; i < s.size(); i++) {
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) {
ch x;
x.c = s[i];
x.seq = i;
isletter.insert(i);
str.push_back(x);
}
}
sort(str.begin(), str.end(), compare);
int j = 0;
for (int i = 0; i < s.size(); i++) {
if (isletter.find(i) != isletter.end()) {
s[i] = str[j].c;
j++;
}
}
cout << s << endl;
}
}