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);
        }
    }
}