import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static String sortString(String input) {
        if (input == null || input.isEmpty()) {
            return input;
        }

        char[] chars = input.toCharArray();
        List<Character> letters = new ArrayList<>();
        List<Integer> letterPositions = new ArrayList<>();

        // 第一步:收集所有字母字符及其位置
        for (int i = 0; i < chars.length; i++) {
            if (Character.isLetter(chars[i])) {
                letters.add(chars[i]);
                letterPositions.add(i);
            }
        }

        // 第二步:对字母进行排序(稳定排序,不区分大小写)
        // 使用冒泡排序实现稳定排序(可以替换为其他稳定排序算法)
        for (int i = 0; i < letters.size() - 1; i++) {
            for (int j = 0; j < letters.size() - 1 - i; j++) {
                char c1 = Character.toLowerCase(letters.get(j));
                char c2 = Character.toLowerCase(letters.get(j + 1));
                if (c1 > c2) {
                    // 交换位置
                    char temp = letters.get(j);
                    letters.set(j, letters.get(j + 1));
                    letters.set(j + 1, temp);
                }
            }
        }

        // 第三步:将排序后的字母放回原位置
        for (int i = 0; i < letterPositions.size(); i++) {
            chars[letterPositions.get(i)] = letters.get(i);
        }

        return new String(chars);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        System.out.println(sortString(input));
    }
}