#include<iostream>
#include<string>
#include<vector>
using namespace std;
int t[10];

vector <int> ans;

bool check(int,int,int);

int main(){
	string str;
	while(cin>>str){
		for(int i=0;i<10;i++)t[i]=0;
		for(int i=0;i<13;i++)t[str[i]-'0']++;
		ans.clear();
		for(int i=1;i<=9;i++){
			if(t[i]==4)continue;
			t[i]++;
			if(check(1,0,0))ans.push_back(i);
			t[i]--;
		}
		if(ans.size()==0)cout<<0<<endl;
		else {
			for(int i=0;i<(int)ans.size();i++){
				if(i)cout<<" ";
				cout<<ans[i];
			}
			cout<<endl;
		}
	}
	return 0;
}

bool check(int x,int y,int z){
	bool flg=false;
	if(x==10){
		if(y==1&&z==4)return true;
		else return false;
	}
	if(t[x]==0)return check(x+1,y,z);

	if(t[x]>=2&&y==0){
		t[x]-=2;
		flg = check(x,1,z);
		t[x]+=2;
	}
	if(flg)return flg;

	if(t[x]>=3&&z<=3){
		t[x]-=3;
		flg = check(x,y,z+1);
		t[x]+=3;
	}
	if(flg)return flg;

	if(z<=3){
		if(x+2<=9){
			if(t[x]>=1&&t[x+1]>=1&&t[x+2]>=1){
				t[x]--;t[x+1]--;t[x+2]--;
				flg= check(x,y,z+1);
				t[x]++;t[x+1]++;t[x+2]++;
			}
		}
	}
	if(flg)return flg;

	return false;
}