#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10,oo=1e9;
char s[N];
int n,temp_tot,o,min_a=1;
int nxt[30][N],g[N],a[N]; //g[i]为不包括i在组内没有出现的最小字母，（写包括一直wa） 
bool vis[30];
int main(){
//	freopen("in.txt","r",stdin);
	scanf("%s",s+1);
	n=strlen(s+1); //s+1 !!
	for(int i=1;i<=n;i++) a[i]=s[i]-'a'+1;
	for(int i=1;i<=26;i++) nxt[i][n+1]=oo;
	for(int i=n;i>=1;i--){
		for(int j=1;j<=26;j++) nxt[j][i]=nxt[j][i+1];
		nxt[a[i]][i]=i; //!
		g[i]=min_a; 
		if(!vis[a[i]]) vis[a[i]]=1;
		while(vis[min_a]) min_a++;
		if(min_a>26){
			min_a=1;
			memset(vis,0,sizeof(vis));
		}
	}
	for(int i=1;i<=26;i++) nxt[i][0]=nxt[i][1];
	nxt[a[1]][0]=1;
	g[0]=min_a,g[n+1]=1;
	int t=0;
	while(t<=n){
		putchar(g[t]+'a'-1);
//		cout<<" "<<g[t]<<endl;
		t=nxt[g[t]][t+1];
	}
	return 0;
}