#include #include using namespace std; using namespace atcoder; typedef int64_t lint; #define rep(i, n) for(int i=0; i; using vvi = vector>; template inline void vin(vector& v) { rep(i, v.size()) cin >> v.at(i); } template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } template inline void drop(T x) { cout << x << endl; exit(0); } template void vout(vector v) { rep(i, v.size()) { cout << v.at(i) << ' '; } cout << endl; } constexpr lint LINF = LLONG_MAX/2; int main() { string N, S; cin >> N; vi v(8); lint a=0, b=0, c=0, x, y, z; if (N.size()%3 == 1) S += "00"; if (N.size()%3 == 2) S += "0"; rep(i, N.size()) { if (N[i] == 'A') S += "1010"; if (N[i] == 'B') S += "1011"; if (N[i] == 'C') S += "1100"; if (N[i] == 'D') S += "1101"; if (N[i] == 'E') S += "1110"; if (N[i] == 'F') S += "1111"; } rep(i, S.size()/3) { if (S.substr(i*3, 3) == "000") v[0]++; if (S.substr(i*3, 3) == "001") v[1]++; if (S.substr(i*3, 3) == "010") v[2]++; if (S.substr(i*3, 3) == "011") v[3]++; if (S.substr(i*3, 3) == "100") v[4]++; if (S.substr(i*3, 3) == "101") v[5]++; if (S.substr(i*3, 3) == "110") v[6]++; if (S.substr(i*3, 3) == "111") v[7]++; } rep(i, 8) chmax(a, v[i]); rep(i, 8) { if (v[i] == a) std::cout << i << ' '; } std::cout << '\n'; }