#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;

char s[14];
char g[10];
vector<int> res;

bool check(int i){
    if(i<8){
        int t=g[i]%3;
        if(g[i+1]<t||g[i+2]<t)return false;
        g[i+1]-=t;
        g[i+2]-=t;
        bool k=check(i+1);
        g[i+1]+=t;
        g[i+2]+=t;
        return k;
    }else{
        if(g[8]%3==0&&g[9]%3==0)return true;
        else return false;
    }
}

int main(){
    while(~scanf("%s ",s)){
        memset(g,0,sizeof(g));
        for(int i=0;i<13;i++){
            g[s[i]-'0']++;
        };
        res.clear();
        for(int i=1;i<10;i++){
            if(g[i]==4)continue;
            g[i]++;
            for(int j=1;j<10;j++){
                if(g[j]<2)continue;
                g[j]-=2;
                bool k=check(1);
                g[j]+=2;
                if(k){
                    res.push_back(i);
                    goto NEXT;
                }
            }
          NEXT:
            g[i]--;
        }
        if(res.empty()){
            puts("0");
            continue;
        }
        for(vector<int>::iterator it=res.begin();it!=res.end();it++){
            if(it==res.begin()){
                printf("%d",*it);
            }else{
                printf(" %d",*it);
            }
        }
        puts("");
    }
}