#include <iostream>
#include <cstring>
using namespace std;

bool C(int* num, int* used, int p, bool dou){
	if(p == 10) for(int i = 1; i < 10 && num[i] == used[i]; i++) if(i + 1 == 10) return true;
	if(num[p] - used[p] >= 3){
		used[p] += 3;
		if(C(num, used, p, dou)) return true;
		used[p] -= 3;
	}
	if(num[p] - used[p] >= 2 && !dou){
		used[p] += 2;
		if(C(num, used, p, true)) return true;
		used[p] -= 2;
	}
	if(num[p] - used[p] >= 1 && p + 2 < 10){
		used[p]++; used[p + 1]++; used[p + 2]++;
		if(C(num, used, p, dou)) return true;
		used[p]--; used[p + 1]--; used[p + 2]--;
	}
	if(num[p] - used[p] == 0){
		return C(num, used, p + 1, dou);
	}
	return false;
}

int main(){
	string str;
	int num[12];
	int used[12];
	bool poss;
	
	while(getline(cin, str)){
		poss = false;
		for(int i = 0; i < 12; i++) num[i] = 0;
		
		for(int i = 0; i < str.size(); i++){
			if(str[i] >= 48 && str[i] < 58) num[str[i] - 48]++;
		}
		for(int n = 1; n < 10; n++){
			if(num[n] < 4){
				num[n]++;
				
				for(int i = 0; i < 12; i++) used[i] = 0;
				
				if(C(num, used, 1, false)){
					printf("%d ", n);
					poss = true;
				}
				
				num[n]--;
			}
		}
		if(!poss) printf("0");
		printf("\n");
		for(int i = 0; i < 15; i++) str[i] = 0;
	}
	
	return 0;
}