#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
bool serch(std::vector<int>&nums)
{
	const int length = nums.size();
	static int found_hand = 0;
	switch (found_hand)
	{
	case 0:
		int pair[2];
		for (int i = 0; i < length - 1; i++)
		{
			for (int j = i + 1; j < length; j++)
			{
				if (nums[i] == nums[j])
				{
					pair[0] = nums[i];
					pair[1] = nums[j];
					nums.erase(nums.begin() + j);
					nums.erase(nums.begin() + i);
					found_hand++;
					if (serch(nums))
					{
						return true;
					}
					else
					{
						nums.push_back(pair[0]);
						nums.push_back(pair[1]);
						std::sort(nums.begin(), nums.end());
						found_hand--;
					}
				}
			}
		}
		break;
	default:
		int trio[3];
		for (int i = 0; i < length - 2; i++)
		{
			for (int j = i + 1; j < length - 1; j++)
			{
				for (int k = j + 1; k < length; k++)
				{
					if (nums[i] == nums[j] && nums[j] == nums[k] || nums[j] == nums[i] + 1 && nums[k] == nums[j] + 1)
					{
						trio[0] = nums[i];
						trio[1] = nums[j];
						trio[2] = nums[k];
						nums.erase(nums.begin() + k);
						nums.erase(nums.begin() + j);
						nums.erase(nums.begin() + i);
						found_hand++;
						if (found_hand == 5 || serch(nums))
						{
							found_hand = 0;
							return true;
						}
						else
						{
							nums.push_back(trio[0]);
							nums.push_back(trio[1]);
							nums.push_back(trio[2]);
							std::sort(nums.begin(), nums.end());
							found_hand--;
						}
					}
				}
			}
		}
		break;
	}
	return false;
}
int main()
{
	for (std::string str; std::cin >> str;)
	{
		std::vector<int>ans;
		ans.reserve(9);
		std::vector<int>nums;
		nums.reserve(14);
		std::vector<int>appearance_count(9, 0);
		for (auto i : str)
		{
			const int foo = static_cast<int>(i - '0');
			nums.push_back(foo);
			appearance_count[foo]++;
		}
		for (int i = 1; i <= 9; i++)
		{
			if (appearance_count[i] == 4)
			{
				continue;
			}
			auto nums_copy = nums;
			nums_copy.push_back(i);
			std::sort(nums_copy.begin(), nums_copy.end());
			if (serch(nums_copy))
			{
				ans.push_back(i);
			}
		}
		if (ans.size() == 0)
		{
			std::cout << '0';
		}
		else
		{
			for (int i = 0; i < ans.size(); i++)
			{
				if (i != 0)
				{
					std::cout << ' ';
				}
				std::cout << ans[i];
			}
		}
		std::cout << std::endl;
	}
	return 0;
}
