#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
#include <string>
#include <sstream>
#include <stack>
#include <iomanip>
#include <numeric>
#include <queue>
#include <climits>
#include <set>
#include <complex>
#include <cmath>
#include <cstring>
#include <map>
using namespace std;
using ll = long long;
#define MOD 1000000007
#define INF 1LL << 59
using ld = long double;

bool dfs(int left, int t[10])
{
    int arr[10] = {0};

    for (int i = 0; i < 10; ++i)
    {
        arr[i] = t[i];
    }
    bool res = false;

    if (left == 10)
    {
        bool f = true;
        for (int i = 1; i < 10; ++i)
        {
            if (arr[i] != 0)
                f = false;
        }
        return f;
    }
    if (arr[left] == 0)
    {
        return dfs(left + 1, arr);
    }
    if (arr[left] < 0)
        return false;
    if (left + 2 < 10)
    {
        int a = arr[left];

        while (a >= 0)
        {
            arr[left] = 0;
            arr[left + 1] -= a;
            arr[left + 2] -= a;
            res |= dfs(left + 1, arr);
            arr[left] = a;
            arr[left + 1] += a;
            arr[left + 2] += a;

            a -= 3;
        }
    }
    else
    {
        if (arr[left] % 3 == 0)
        {
            arr[left] = 0;
            res |= dfs(left + 1, arr);
        }
        else
        {
            return false;
        }
    }
    return res;
}
int main()
{
    //std::ios::sync_with_stdio(false);
    //std::cin.tie(0);
    cout << fixed << setprecision(7);

    string s;
    while (cin >> s)
    {

        int arr[10] = {0};
        for (int i = 0; i < s.size(); ++i)
        {
            arr[s[i] - '0']++;
        }

        vector<int> ans;

        for (int i = 1; i < 10; ++i)
        {
            arr[i]++;
            if (arr[i] > 4)
            {
                arr[i]--;
                continue;
            }
            bool res = false;
            for (int j = 1; j < 10; ++j)
            {
                if (arr[j] >= 2)
                {
                    arr[j] -= 2;
                    res |= dfs(1, arr);
                    arr[j] += 2;
                }
            }
            if (res)
                ans.push_back(i);
            arr[i]--;
        }

        if (ans.size() == 0)
        {
            cout << 0 << endl;
        }
        else
        {
            for (int i = 0; i < ans.size(); ++i)
            {
                if (i)
                    cout << " ";
                cout << ans[i];
            }
            cout << endl;
        }
    }
    return 0;
}
