using System.Collections.Generic;
public class Program {
public static void Main() {
var line = System.Console.ReadLine ();
// 1 Distribute.
var charLists = new List<char>['Z'-'A'+1];
foreach(var c in line) {
int i = -1;
if ('a'<=c && c<='z') i = c - 'a';
else if ('A'<=c && c<='Z') i = c - 'A';
if (i != -1) {
var list = charLists[i];
if (list == null) charLists[i] = list = new List<char>();
list.Add(c);
}
}
// 2 Collect.
for (int i=0, j=0, k=0; i<line.Length; ++i) {
var c = line[i];
if (char.IsLetter(c)) {
while (j < charLists.Length) {
if (charLists[j] == null) ++j;
else if (k < charLists[j].Count) {
System.Console.Write(charLists[j][k++]);
break;
} else { // k >= count.
++j;
k = 0; // Reset.
}
}
} else System.Console.Write(c);
}
}
}