#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
typedef long long int ll;
typedef long double ld;
#define FOR(i,l,r) for(ll i=l;i<r;i++)
#define REP(i,n) FOR(i,0,n)
#define RFOR(i,l,r) for(ll i=r-1;i>=l;i--)
#define RREP(i,n) RFOR(i,0,n)
#define ALL(x) x.begin(),x.end()
#define P pair<ll,ll>
#define F first
#define S second
#define BS(A,x) binary_search(ALL(A),x)
#define LB(A,x) (ll)(lower_bound(ALL(A),x)-A.begin())
#define UB(A,x) (ll)(upper_bound(ALL(A),x)-A.begin())
#define COU(A,x) UB(A,x)-LB(A,x)
template<typename T>using min_priority_queue=priority_queue<T,vector<T>,greater<T>>;
using mint=modint1000000007;
//using mint=modint998244353;
void chmax(ll&a,ll b){a=max(a,b);}
void chmin(ll&a,ll b){a=min(a,b);}
signed main(){
  string S16,S2,S8;cin>>S16;
  vector<ll>ans(8);
  for(auto c:S16){
    ll n=c-'A'+10;string S;
    REP(i,4){S=(char)('0'+n%2)+S;n/=2;}
    S2+=S;
  }
  while(S2.size()%3)S2='0'+S2;
  REP(i,S2.size()/3){
    ll n=0;string S=S2.substr(3*i,3);
    REP(j,3)n=2*n+S[j]-'0';
    ans[n]++;
  }
  ll m=0;REP(i,8)chmax(m,ans[i]);
  vector<ll>p;REP(i,8)if(ans[i]==m)p.push_back(i);
  REP(i,p.size()){cout<<p[i];if(i==p.size()-1)cout<<endl;else cout<<" ";}
  return 0;
}