#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#define deb(...) logger(#__VA_ARGS__, __VA_ARGS__)
template<typename... Args>
void logger(string vars, Args &&... values) {
cout << vars << " = ";
string delim = "";
(..., (cout << delim << values, delim = ", "));
cout << '\n';
}
#define int long long
#define ll long long
#define ld long double
#define nl "\n"
#define aw3dni_ink_tet3aleg ios_base::sync_with_stdio(false), cout.tie(NULL), cin.tie(NULL);
#define ff first
#define ss second
void FILES() {
aw3dni_ink_tet3aleg
}
ll OO = 0x3f3f3f3f3f3f3f3f, oo = 0x3f3f3f3f, MOD = 1e9 + 7; //1e9 + 7 ,,998244353
// وَقُلْ رَبِّ زِدْنِي عِلْمًا
long long randomLongLong(long long a, long long b) {
random_device rd;
mt19937_64 rng(rd());
uniform_int_distribution<long long> dist(a, b);
return dist(rng);
}
void solve() {
string s;
cin >> s;
ll n = s.size();
const int N = 1e6 + 10, base = randomLongLong(1123, 1000000007), mod = 1e9 + 9;
vector<ll> power(N);
power[0] = 1;
for (ll i = 1; i < N; i++) {
power[i] = (power[i - 1] * base) % mod;
}
ll cur = 0;
vector<ll> pre;
for (ll i = 0; i < n; i++) {
cur = (cur * base + s[i]) % mod;
pre.push_back(cur);
}
map<ll,ll> mp;
int l = 0, r = n - 1;
for (ll i = 0; i < n - 1; i++) {
cur = ((cur - (s[l] * power[n - 2]) % mod) + mod) % mod;
cur = (cur * base + s[l]) % mod;
mp[l] = cur;
l++;
}
int ans = -1,momkn = OO;
for (auto it : mp) {
cout <<it.ff<<" "<<it.ss<<nl;
if (it.ss < momkn) {
momkn = it.ss; ans = it.ff;
}
}
cout <<ans;
}
signed main() {
FILES();
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int T = 1, t = 1;
// cin >> T;
while (T--) {
solve();
t++;
// vid++;
if (T >= 1) {
cout << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2RlZmluZSBkZWIoLi4uKSBsb2dnZXIoI19fVkFfQVJHU19fLCBfX1ZBX0FSR1NfXykKCnRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CnZvaWQgbG9nZ2VyKHN0cmluZyB2YXJzLCBBcmdzICYmLi4uIHZhbHVlcykgewogICAgY291dCA8PCB2YXJzIDw8ICIgPSAiOwogICAgc3RyaW5nIGRlbGltID0gIiI7CiAgICAoLi4uLCAoY291dCA8PCBkZWxpbSA8PCB2YWx1ZXMsIGRlbGltID0gIiwgIikpOwogICAgY291dCA8PCAnXG4nOwp9CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIG5sICJcbiIKI2RlZmluZSBhdzNkbmlfaW5rX3RldDNhbGVnIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjb3V0LnRpZShOVUxMKSwgY2luLnRpZShOVUxMKTsKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAoKdm9pZCBGSUxFUygpIHsKICAgIGF3M2RuaV9pbmtfdGV0M2FsZWcKfQoKbGwgT08gPSAweDNmM2YzZjNmM2YzZjNmM2YsIG9vID0gMHgzZjNmM2YzZiwgTU9EID0gMWU5ICsgNzsgLy8xZTkgKyA3ICwsOTk4MjQ0MzUzCi8vINmI2Y7ZgtmP2YTZkiDYsdmO2KjZkNmRINiy2ZDYr9mS2YbZkNmKINi52ZDZhNmS2YXZi9inCmxvbmcgbG9uZyByYW5kb21Mb25nTG9uZyhsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsKICAgIHJhbmRvbV9kZXZpY2UgcmQ7CiAgICBtdDE5OTM3XzY0IHJuZyhyZCgpKTsKICAgIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsb25nIGxvbmc+IGRpc3QoYSwgYik7CiAgICByZXR1cm4gZGlzdChybmcpOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgc3RyaW5nIHM7CiAgICBjaW4gPj4gczsKICAgIGxsIG4gPSBzLnNpemUoKTsKICAgIGNvbnN0IGludCBOID0gMWU2ICsgMTAsIGJhc2UgPSByYW5kb21Mb25nTG9uZygxMTIzLCAxMDAwMDAwMDA3KSwgbW9kID0gMWU5ICsgOTsKICAgIHZlY3RvcjxsbD4gcG93ZXIoTik7CiAgICBwb3dlclswXSA9IDE7CiAgICBmb3IgKGxsIGkgPSAxOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgcG93ZXJbaV0gPSAocG93ZXJbaSAtIDFdICogYmFzZSkgJSBtb2Q7CiAgICB9CiAgICBsbCBjdXIgPSAwOwogICAgdmVjdG9yPGxsPiBwcmU7CiAgICBmb3IgKGxsIGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY3VyID0gKGN1ciAqIGJhc2UgKyBzW2ldKSAlIG1vZDsKICAgICAgICBwcmUucHVzaF9iYWNrKGN1cik7CiAgICB9CiAgICBtYXA8bGwsbGw+IG1wOwogICAgaW50IGwgPSAwLCByID0gbiAtIDE7CiAgICBmb3IgKGxsIGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGN1ciA9ICgoY3VyIC0gKHNbbF0gKiBwb3dlcltuIC0gMl0pICUgbW9kKSArIG1vZCkgJSBtb2Q7CiAgICAgICAgY3VyID0gKGN1ciAqIGJhc2UgKyBzW2xdKSAlIG1vZDsKICAgICAgICBtcFtsXSA9IGN1cjsKICAgICAgICBsKys7CiAgICB9CiAgICBpbnQgYW5zID0gIC0xLG1vbWtuID0gT087CiAgICBmb3IgKGF1dG8gaXQgOiBtcCkgewogICAgICAgIGNvdXQgPDxpdC5mZjw8IiAiPDxpdC5zczw8bmw7CiAgICAgICAgaWYgKGl0LnNzIDwgbW9ta24pIHsKICAgICAgICAgICAgbW9ta24gPSBpdC5zczsgYW5zID0gaXQuZmY7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PGFuczsKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBGSUxFUygpOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKICAgIGludCBUID0gMSwgdCA9IDE7CiAgICAvLyBjaW4gPj4gVDsKICAgIHdoaWxlIChULS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgICAgIHQrKzsKICAgICAgICAvLyB2aWQrKzsKICAgICAgICBpZiAoVCA+PSAxKSB7CiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=