#include<iostream>

using namespace std;

int num[9],p[9];

int isUp(int depth){
	int i,j;
	int res;

	for(i=0;i<9;i++){
		if(depth==4){
			if(p[i]==2) return 1;
		}
		if(i+2<9 && p[i] && p[i+1] && p[i+2]){
			p[i]--;
			p[i+1]--;
			p[i+2]--;
			res = isUp(depth+1);
			p[i]++;
			p[i+1]++;
			p[i+2]++;
			if(res) return 1;
		}
		if(p[i]>2){
			p[i]-=3;
			res = isUp(depth+1);
			p[i]+=3;
			if(res) return 1;
		}
	}

	return 0;
}

int main(void){
	int i,j;
	char ch13[15];
	int ans[9];

	for(;scanf("%s",ch13)==1;){
		for(i=0;i<9;i++) ans[i]=0;
		for(i=0;i<9;i++) num[i]=0;
		for(i=0;i<13;i++) num[ch13[i]-'0'-1]++;

		int cur=0;
		for(i=1;i<=9;i++){
			for(j=0;j<9;j++)
				p[j]=num[j];

			if(p[i-1]>=4) continue;
			p[i-1]++;

			if(isUp(0)){
				ans[cur]=i;
				cur++;
			}
		}

		if(cur==0){
			printf("0\n"); 
			continue;
		}

		for(i=0;i<cur;i++){
			printf("%d",ans[i]);
			if(i<cur-1)
				printf(" ");
		}
		puts("");
	}

	return 0;
}