//35
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

bool chk(const int *p,int f){
  if(f==12){
    return true;
  }else{
    bool r=false;
    const int *t;
    for(t=p;*t==0;t++) ;
    if((f&8)==0&&*t>=2){
      int cp[10];
      memcpy(cp,p,sizeof(cp));
      cp[t-p]-=2;
      r|=chk(cp,f|8);
    }
    if((f&7)<4){
      if(*t>=3){
	int cp[10];
	memcpy(cp,p,sizeof(cp));
	cp[t-p]-=3;
	r|=chk(cp,f+1);
      }
      if(t-p<=7&&*t&&t[1]&&t[2]){
	int cp[10];
	memcpy(cp,p,sizeof(cp));
	for(int i=0;i<3;i++){
	  cp[t-p+i]--;
	}
	r|=chk(cp,f+1);
      }
    }
    return r;
  }
}

int main(){
  for(;;){
    int p[10]={};
    for(int i=0;i<13;i++){
      char c;
      cin>>c;
      if(!cin)return 0;
      p[c-'0']++;
    }
    bool com=false;
    for(int i=1;i<=9;i++){
      int cp[10];
      memcpy(cp,p,sizeof(cp));
      cp[i]++;
      if(*max_element(cp,cp+10)<=4&&chk(cp,0)){
	if(com){
	  cout<<' ';
	}
	cout<<i;
	com=true;
      }
    }
    if(!com){
      cout<<0;
    }
    cout<<endl;
  }
  return 0;
}