#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef complex<double> P;
typedef pair<int,int> pii;
#define REP(i,n) for(ll i=0;i<n;++i)
#define REPR(i,n) for(ll i=1;i<n;++i)
#define FOR(i,a,b) for(ll i=a;i<b;++i)

#define DEBUG(x) cout<<#x<<": "<<x<<endl
#define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl
#define ALL(a) (a).begin(),(a).end()

#define MOD (ll)(1e9+7)
#define ADD(a,b) a=((a)+(b))%MOD
#define FIX(a) ((a)%MOD+MOD)%MOD

bool dfs(vi a){
  // DEBUG_VEC(a);
  int sum = 0;
  REPR(i,10)sum+=a[i];
  if(sum==0)return true;
  if(sum%3!=0)assert(false&&"?????????????????????????????????");
  // ????????????
  REPR(i,10-2){
    if(a[i]>0 && a[i+1]>0 && a[i+2]>0){
      vi b = a;
      b[i]--;
      b[i+1]--;
      b[i+2]--;
      if(dfs(b))return true;
    }
  }
  // ??????
  REPR(i,10){
    if(a[i]>=3){
      vi b = a;
      b[i]-=3;
      if(dfs(b))return true;
    }
  }
  return false;
}

int main(){
  ll pi;
  while(~scanf("%lld",&pi)){
    vi res;
    vi picnt(10,0);
    REP(i,13){
      picnt[pi%10]++;
      pi/=10;
    }
    // DEBUG_VEC(picnt);
    // ???????????????
    REPR(i,10){
      bool flag = false;
      if(picnt[i]==4)continue;
      ++picnt[i];
      // ??????????????????
      REPR(j,10){
        if(picnt[j]<2)continue;
        picnt[j]-=2;
        bool ok = dfs(picnt);
        picnt[j]+=2;
        if(ok){
          flag = true;
          break;
        }
      }
      --picnt[i];
      if(flag) res.push_back(i);
    }
    if(res.size()==0) res.push_back(0);
    cout<<res[0];
    REPR(i,res.size())cout<<" "<<res[i];
    cout<<endl;
  }
  return 0;
}