#include<bits/stdc++.h>

using namespace std;

#define int long long
#define For(i, a, b) for(int i = a; i <= b; ++ i)
const int N = 5e5 + 5, mod = 1e9 + 7;

int l, q;
string s;
int _hash[N], Hash[N], Pow[N];
bool pre[N], suf[N];

int get_hash(int l, int r){
	return (_hash[r] - _hash[l - 1] * Pow[r - l + 1] + mod * mod ) % mod;
}
int get_hash2(int l, int r){
	return (Hash[l] - Hash[r + 1] * Pow[r - l + 1] + mod * mod ) % mod;
}
signed main(){
	ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);
	cin >> s;
	int len = s.length();
	s = "." + s;
	int ok = 0;
	For(i, 1, len) if(s[i] != s[1]){ ok = 1; break; }
	if(!ok){ cout << len << "\n" << 1; return 0; }
	Pow[0] = 1;
	For(i, 1, N - 1) Pow[i] = Pow[ i - 1] * 27 % mod;
	
	For(i, 1, len) _hash[i] = (_hash[i - 1] * 27 + s[i] - 'a' + 1) % mod;
	for(int i = len; i > 0; -- i) Hash[i] = (Hash[i + 1] * 27 + s[i] - 'a' + 1) % mod;
	
	For(i, 1, len){
		for(int j = i + 1; j + i - 1 <= len; j += i){
			if(_hash[i] != get_hash(j, j + i - 1)) break;
			pre[j + i - 1] = true;
		}
	}
	for(int i = len ; i > 0; -- i){
		int val = get_hash2(len - i + 1, len);
		for(int j = len - i; j - i + 1 > 0; j -= i){
			if(val != get_hash2(j - i + 1, j)) break;
			suf[j - i + 1] = true;
		}
	}
	if(!pre[len]){ cout << 1 << "\n" << 1; return 0; }
	int dem = 0;
	For(i, 1, len - 1) if(!pre[i] && !suf[i + 1]) dem ++;
	cout << 2 << "\n" << dem;
}