#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
using namespace std;
bool deb = 0 , deb2 = 1;
char str[14],sor[14];
int bod[10];
int head_check(void);
int body_check(int x);
int main(){
    while(cin>>str){
        bool zero=0;
        int flg[14]={0};

        for(int i=0;i<13;i++){
            flg[str[i]-'0']++;
        }
        for(int i=1;i<=9;i++){
            if(flg[i]<4){
                str[13]=i+'0';
                for(int j=0;j<14;j++){
                    sor[j]=str[j];
                }
                sort(sor,sor+14);
                if(deb)cout<<sor<<endl;
                if(head_check()){
                    zero ? cout<<" "<<i : cout<<i;
                    zero=1;
                }
            }
        }
        if(!zero)cout<<0;
        cout<<endl;

        for(int q=0;q<14;q++){
            str[q]=0,sor[q]=0;
        }
        for(int q=0;q<10;q++){
            bod[q]=0;
        }
    }
}
int head_check(void){
    for(int i=0;i<13;i++){
        if(sor[i]==sor[i+1]){
            for(int j=0,k=0;j<14;j++){
                if(j!=i&&j!=i+1){
                    bod[sor[j]-'0']++;
                }

            }
            if(body_check(1))return 1;
        }
        for(int j=1;j<10;j++){
            bod[j]=0;
        }
    }
    return 0;
}
int body_check(int x){
    if(deb){
        cout<<"x="<<x<<" ";
        for(int q=1;q<10;q++)cout<<bod[q];
        cout<<endl;
    }
    if(x==5)return 1;
    for(int i=1;i<10;i++){

        if(bod[i]>=3){
            bod[i]-=3;
            if(body_check(x+1))return 1;
            bod[i]+=3;
        }
        if(i<=7&&bod[i]>0&&bod[i+1]>0&&bod[i+2]>0){
            bod[i]--,bod[i+1]--,bod[i+2]--;
            if(body_check(x+1))return 1;
            bod[i]++,bod[i+1]++,bod[i+2]++;
        }
    }
    return 0;
}