#include <bits/stdc++.h>
#include <map>
using namespace std;
bool check(string &str, int k) {
map<string, int> mp;
int p = 31, mod = 1e9;
string curr = "";
for (int i = 0; i < k; ++i) {
curr.push_back(str[i]);
}
mp[curr] = 1;
for (int i = k; i < str.size(); ++i) {
curr.erase(0, 1);
curr.push_back(str[i]);
mp[curr] += 1;
if (mp[curr] >= 2)
return true;
}
return false;
}
int binarySearch(string &str) {
int left = 2, right = str.size() - 1, ans = -1;
while (left <= right) {
int middle = left + (right - left) / 2;
if (check(str, middle)) {
ans = middle;
left = middle + 1;
}
else
right = middle - 1;
}
return ans;
}
int TensorflightSWEInternshipTask2(string str) {
return binarySearch(str);
}
int main(void) {
string test = "aabaaba";
cout << TensorflightSWEInternshipTask2(test);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxtYXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIGNoZWNrKHN0cmluZyAmc3RyLCBpbnQgaykgewogIG1hcDxzdHJpbmcsIGludD4gbXA7CiAgaW50IHAgPSAzMSwgbW9kID0gMWU5OwogIHN0cmluZyBjdXJyID0gIiI7CgogIGZvciAoaW50IGkgPSAwOyBpIDwgazsgKytpKSB7CiAgICBjdXJyLnB1c2hfYmFjayhzdHJbaV0pOwogIH0KICBtcFtjdXJyXSA9IDE7CgogIGZvciAoaW50IGkgPSBrOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CiAgICBjdXJyLmVyYXNlKDAsIDEpOwogICAgY3Vyci5wdXNoX2JhY2soc3RyW2ldKTsKCW1wW2N1cnJdICs9IDE7CiAgICBpZiAobXBbY3Vycl0gPj0gMikKICAgICAgcmV0dXJuIHRydWU7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKaW50IGJpbmFyeVNlYXJjaChzdHJpbmcgJnN0cikgewogIGludCBsZWZ0ID0gMiwgcmlnaHQgPSBzdHIuc2l6ZSgpIC0gMSwgYW5zID0gLTE7CiAgd2hpbGUgKGxlZnQgPD0gcmlnaHQpIHsKICAgIGludCBtaWRkbGUgPSBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyOwogICAgaWYgKGNoZWNrKHN0ciwgbWlkZGxlKSkgewogICAgICBhbnMgPSBtaWRkbGU7CiAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgfQogICAgZWxzZQogICAgICByaWdodCA9IG1pZGRsZSAtIDE7CiAgfQogIHJldHVybiBhbnM7Cn0KCmludCBUZW5zb3JmbGlnaHRTV0VJbnRlcm5zaGlwVGFzazIoc3RyaW5nIHN0cikgewogIHJldHVybiBiaW5hcnlTZWFyY2goc3RyKTsKfQoKaW50IG1haW4odm9pZCkgeyAKICBzdHJpbmcgdGVzdCA9ICJhYWJhYWJhIjsKICBjb3V0IDw8IFRlbnNvcmZsaWdodFNXRUludGVybnNoaXBUYXNrMih0ZXN0KTsKICByZXR1cm4gMDsKICAgIAp9