#include <algorithm>
#include <bitset>
#include <iostream>
#include <random>
#include <string>
#include <vector>

std::vector<int> liczby_pierwsze_ponizej(int n) {
	std::vector<bool> sito(n, true);
	std::vector<int> wynik;
	for (long long i = 2; i < n; i++) {
		if (sito[i]) {
			wynik.push_back((int)i);
			for (long long j = i * i; j < n; j += i) {
				sito[j] = false;
			}
		}
	}
	return wynik;
}

int main() {
	const int limit_liczb = 100'000;
	auto liczby_pierwsze = liczby_pierwsze_ponizej(limit_liczb);
	std::random_device dev;
	std::mt19937_64 random(dev());
	std::shuffle(liczby_pierwsze.begin(), liczby_pierwsze.end(), random);
	std::string duza_liczba;
	std::cin >> duza_liczba;
	int n = (int)duza_liczba.size();
	std::vector<std::bitset<10>> moze_byc_rozwiazaniem(n, std::bitset<10>(~0u));
	moze_byc_rozwiazaniem[0][0] = false;
	for (int i = 0; i < n; i++) {
		auto& c = duza_liczba[i];
		c -= '0';
		moze_byc_rozwiazaniem[i][c] = false;
	}
	int potencjalne_rozwiazania = n * 9 - 1;
	for (const auto& p : liczby_pierwsze) {
		long long m = p;
		while (m * p < limit_liczb)
			m *= p;
		std::vector<bool> reszta_kwadratowa_modulo_m(m);
		for (long long i = 0; i < m; i++) {
			reszta_kwadratowa_modulo_m[i * i % m] = true;
		}
		long long reszta = 0;
		for (const auto& c : duza_liczba) {
			reszta = (reszta * 10 + c) % m;
		}
		long long potega_10 = 1;
		for (int i = n; i--;) {
			for (int j = 0; j < 10; j++) {
				if (moze_byc_rozwiazaniem[i][j]) {
					long long reszta_po_zmianie = ((reszta + (j - duza_liczba[i]) * potega_10) % m + m) % m;
					if (!reszta_kwadratowa_modulo_m[reszta_po_zmianie]) {
						moze_byc_rozwiazaniem[i][j] = false;
						potencjalne_rozwiazania--;
					}
				}
			}
			potega_10 = potega_10 * 10 % m;
		}
		if (potencjalne_rozwiazania == 1) {
			auto it = std::find_if(moze_byc_rozwiazaniem.begin(), 
				moze_byc_rozwiazaniem.end(), [](const std::bitset<10>& b) {
				return b.any();
			});
			int pozycja = (int)(it - moze_byc_rozwiazaniem.begin()) + 1;
			int nowa_wartosc = 0;
			while (!(*it)[nowa_wartosc]) {
				nowa_wartosc++;
			}
			std::cout << pozycja << ' ' << nowa_wartosc << '\n';
			return 0;
		}
	}
	return 1;
}
