#include <stdio.h>

int Rec(int* pai, int add);
int ArrayCopy(int* a, int* b);

int ans[9];
int num;

int main(void){
	int pai[9];
	int next[9];
	int temp;

	while(scanf("%1d", &temp) != EOF){
		for(int i=0; i<9; i++){
			pai[i] = 0;
			ans[i] = 0;
		}
		num = 0;

		pai[temp-1]++;
		for(int i=1; i<13; i++){
			scanf("%1d", &temp);
			pai[temp-1]++;
		}

		for(int i=1; i<10; i++){
			if(pai[i-1]+1 > 4) continue;
			pai[i-1]++;
			for(int j=1; j<10; j++){
				if(pai[j-1] >= 2){
					ArrayCopy(next, pai);
					next[j-1] -= 2;
					Rec(next, i);
				}
			}
			pai[i-1]--;
		}

		//ans output
		for(int i=0; i < num-1; i++){
			printf("%d ", ans[i]);
		}
		if(num != 0)printf("%d\n", ans[num-1]);
		else printf("0\n");
	}

	return 0;
}

int Rec(int* pai, int add){
	int i;
	for(i=0; i<9; i++){
		if(pai[i] != 0) break;
	}
	if(i == 9){
		if(num == 0 || ans[num-1] != add){
			ans[num] = add;
			num++;
		}
		return 1;
	}

	for(i=0; i<9; i++){
		if(pai[i] >= 3){
			int next[9];
			ArrayCopy(next, pai);
			next[i] -= 3;
			Rec(next, add);
		}
	}

	for(i=0; i<7; i++){
		if(pai[i] >= 1 && pai[i+1] >= 1 && pai[i+2] >= 1){
			int next[9];
			ArrayCopy(next, pai);
			next[i]--;
			next[i+1]--;
			next[i+2]--;
			Rec(next, add);
		}
	}

	return 0;
}

int ArrayCopy(int* a, int* b){
	for(int i=0; i<9; i++){
		a[i] = b[i];
	}

	return 0;
}