import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
String input = scanner.next();
System.out.println(del(input));
}
}
public static String del(String input){
char[] str = input.toCharArray();
int[] map = new int[26];
for(int i=0;i
// 字母出现次数统计,记得要减去'a'
map[str[i] - 'a']++;
}
// 结果
char[] res = new char[26];
// res的目前最后一位
int index = 0;
int l = 0;
int r = 0;
while(r != str.length){
// 若此字符已挑选过,或是后面还会出现,则跳过
if(map[str[r] - 'a'] == -1 || --map[str[r] - 'a']>0){
r++;
}else{
// 挑选出字典序最小的字符,遍历一遍从左到右依次比较即可
int pick = -1;
for(int i=l;i<=r;i++){
if(map[str[i] - 'a'] != -1 && (pick == -1 || str[i]
pick = i;
}
}
// 把挑选结果放入结果
res[index++] = str[pick];
// 把后面的还要考虑的字符数加回来
for(int i=pick+1;i<=r;i++){
if(map[str[i] - 'a'] != -1){
map[str[i] - 'a']++;
}
}
// 标记为已挑选过的字符
map[str[pick] - 'a'] = -1;
l = pick+1;
r = pick+1;
}
}
return String.valueOf(res);
}
}