#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;


int check(int *a){
  int s = 0;//s=0なら全てが揃った
  for(int i = 1;i < 10;i++){
    s += a[i];
  }
  return s;
}


void solve(int *a,int n,int ans[10]){
  if(check(a) ==0){//完成した
    ans[n] = 1;
    return;
  }
  for(int i = 1;i <= 7;i++){//まずは順子から探す
    if(a[i]&&a[i+1]&&a[i+2]){
      a[i]--;
      a[i+1]--;
      a[i+2]--;
      solve(a,n,ans);
      a[i]++;
      a[i+1]++;
      a[i+2]++;
    }
  }
  for(int i =1;i <=9;i++){//暗刻を探す
    if(a[i] >=3){
      a[i] -=3;
      solve(a,n,ans);
      a[i] +=3;
	}
    }

}

int main()
{
  string s;
  while(cin >>s){
    int useDigit[10] = {0};//いくつ使用したかどうか記憶
    int ans[10] = {0};

    if(s.length() !=13){
      continue;
    }
    for(int i = 0;i < 13;i++){
    useDigit[s[i]-'0']++;
    }
  
  for(int i = 1;i <=9;i++){
    if(useDigit[i] >=4){
      continue;
    }else{
      useDigit[i]++;
      for(int j = 1;j <=9;j++){//ペアが出来るかどうか判定をして暗刻と順子を探す
	if(useDigit[j] >=2){
	  useDigit[j] -=2;
	  solve(useDigit,i,ans);
	  useDigit[j] +=2;
       }
      }
      useDigit[i]--;
    }
  }
  bool flag = false;
  int Count = 0;
  for(int i =1;i <=9;i++){
    if(ans[i]){//ans[i]が1なら成功
      Count++;
      flag = true;
    }
  }
  if(!flag){
    cout << 0 <<endl;
    return 0;
  }else{
    for(int i = 1;i <=9;i++){
      if(ans[i] ==1){
	cout <<i;
	if(--Count)
	  cout <<" ";
      }
    }
    cout <<endl;
  }
  }
  return 0;
}