//Puzzle
#include<iostream>
#include<string>

using namespace std;

int main(void){
	string a;
	int in[14],data[15],wark,flag=0;
	int cnt=0,ans=0,out=0,t=0;
	int i,j,z,x,y,v;

	data[14]=0;
	in[0]=0;
	while(cin>>a){
		for(i=1;i<14;i++){
			in[i]=a[i-1]-'0';
		}
		
		for(i=1;i<=9;i++){
			in[0]=i;
			for(j=0;j<14;j++)	data[j]=in[j];
			
			//昇順にソート
			for(x=0;x<13;x++){
				for(z=x+1;z<14;z++){
					if(data[x]>data[z]){
						wark=data[x];
						data[x]=data[z];
						data[z]=wark;
					}
				}
			}
			//五つ以上の同じ数値がある場合
			for(j=0;j<=8;j++){
				if(data[j]==data[j+1] && data[j+1]==data[j+2] && data[j+2]==data[j+3]&& data[j+3]==data[j+4]){
						flag=1;
				}
			}
			if(flag==0){
				//二つの同じ数値の検索
				while(t<=12){
					if(data[t]==data[t+1]){
						ans++;
						data[t]=data[t+1]=0;
						//昇順にソート
						for(x=0;x<13;x++){
							for(z=x+1;z<14;z++){
								if(data[x]>data[z]){
									wark=data[x];
									data[x]=data[z];
									data[z]=wark;
								}
							}
						}
						cnt+=2;
						//三個の数字の組み合わせ
						for(j=cnt;j<=11;j++){
							if(data[j]==data[j+1] && data[j+1]==data[j+2]){
								ans++;
								data[j]=data[j+1]=data[j+2]=0;
								//昇順にソート
								for(x=0;x<13;x++){
									for(z=x+1;z<14;z++){
										if(data[x]>data[z]){
											wark=data[x];
											data[x]=data[z];
											data[z]=wark;
										}
									}
								}
								cnt+=3;
								j+=2;
							}
						}
						for(j=cnt;j<=11;j++){
							for(y=j+1;y<=12;y++){
								for(v=y+1;v<=13;v++){
									if(data[j]+1==data[y] && data[y]+1==data[v]){
										ans++;
										data[j]=data[y]=data[v]=0;
										//昇順にソート
										for(x=0;x<13;x++){
											for(z=x+1;z<14;z++){
												if(data[x]>data[z]){
													wark=data[x];
													data[x]=data[z];
													data[z]=wark;
												}
											}
										}
										cnt+=3;
										j+=2;
										y+=2;
										v+=2;
									}
								}
							}
						}
						for(j=0;j<14;j++)	data[j]=in[j];			
						//昇順にソート
						for(x=0;x<13;x++){
							for(z=x+1;z<14;z++){
								if(data[x]>data[z]){
									wark=data[x];
									data[x]=data[z];
									data[z]=wark;
								}
							}
						}
					}
					if(ans==5 && out==0){
						cout<<i;
						out=1;
						break;
					}
					else if(ans==5 && out==1){
						cout<<' '<<i;
						break;
					}
					else{
						ans=cnt=0;
						if(data[t]==data[t+1]){
							ans++;
							data[t]=data[t+1]=0;
							//昇順にソート
							for(x=0;x<13;x++){
								for(z=x+1;z<14;z++){
									if(data[x]>data[z]){
										wark=data[x];
										data[x]=data[z];
										data[z]=wark;
									}
								}
							}
							cnt+=2;
							//三個の数字の組み合わせ
							for(j=cnt;j<=11;j++){
								for(y=j+1;y<=12;y++){
									for(v=y+1;v<=13;v++){
										if(data[j]+1==data[y] && data[y]+1==data[v]){
											ans++;
											data[j]=data[y]=data[v]=0;
											//昇順にソート
											for(x=0;x<13;x++){
												for(z=x+1;z<14;z++){
													if(data[x]>data[z]){
														wark=data[x];
														data[x]=data[z];
														data[z]=wark;
													}
												}
											}
											cnt+=3;
											j+=2;
											y+=2;
											v+=2;
										}
									}
								}
							}
							for(j=cnt;j<=11;j++){
								if(data[j]==data[j+1] && data[j+1]==data[j+2]){
									ans++;
									data[j]=data[j+1]=data[j+2]=0;
									//昇順にソート
									for(x=0;x<13;x++){
										for(z=x+1;z<14;z++){
											if(data[x]>data[z]){
												wark=data[x];
												data[x]=data[z];
												data[z]=wark;
											}
										}
									}
									cnt+=3;
									j+=2;
								}
							}
							for(j=0;j<14;j++)	data[j]=in[j];			
							//昇順にソート
							for(x=0;x<13;x++){
								for(z=x+1;z<14;z++){
									if(data[x]>data[z]){
										wark=data[x];
										data[x]=data[z];
										data[z]=wark;
									}
								}
							}
						}
						if(ans==5 && out==0){
							cout<<i;
							out=1;
							break;
						}
						else if(ans==5 && out==1){
							cout<<' '<<i;
							break;
						}
					}
					t++;
					ans=cnt=0;
				}
				ans=cnt=0;
			}
			else	flag=0;
			t=0;
		}
		if(out==0)	cout<<'0'<<endl;
		else	cout<<endl;
		out=0;
	}

	return 0;
}

Measured memory_bytes: 1184