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