#include<bits/stdc++.h>
using namespace std;
#define task "thd"
string S;
int n;
// Kiểm tra xem tất cả các xâu con độ dài k có đôi một phân biệt không
bool check(int k) {
unordered_set<string> st;
for (int i = 0; i <= n - k; i++) {
string sub = S.substr(i, k);
// Nếu đã xuất hiện xâu trùng -> k này không hợp lệ
if (st.count(sub)) return false;
st.insert(sub);
}
return true;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin >> S;
n = S.size();
// Thử độ dài k từ 1 đến n, gặp k thỏa mãn đầu tiên là dừng
for (int k = 1; k <= n; k++) {
if (check(k)) {
cout << k;
return 0;
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgdGFzayAidGhkIgoKc3RyaW5nIFM7CmludCBuOwoKLy8gS2nhu4NtIHRyYSB4ZW0gdOG6pXQgY+G6oyBjw6FjIHjDonUgY29uIMSR4buZIGTDoGkgayBjw7MgxJHDtGkgbeG7mXQgcGjDom4gYmnhu4d0IGtow7RuZwpib29sIGNoZWNrKGludCBrKSB7CiAgICB1bm9yZGVyZWRfc2V0PHN0cmluZz4gc3Q7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuIC0gazsgaSsrKSB7CiAgICAgICAgc3RyaW5nIHN1YiA9IFMuc3Vic3RyKGksIGspOwogICAgICAgIC8vIE7hur91IMSRw6MgeHXhuqV0IGhp4buHbiB4w6J1IHRyw7luZyAtPiBrIG7DoHkga2jDtG5nIGjhu6NwIGzhu4cKICAgICAgICBpZiAoc3QuY291bnQoc3ViKSkgcmV0dXJuIGZhbHNlOyAKICAgICAgICBzdC5pbnNlcnQoc3ViKTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IAogICAgY2luLnRpZSgwKTsKCiAgICBpZiAoZm9wZW4odGFzayIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IFM7CiAgICBuID0gUy5zaXplKCk7CgogICAgLy8gVGjhu60gxJHhu5kgZMOgaSBrIHThu6sgMSDEkeG6v24gbiwgZ+G6t3AgayB0aOG7j2EgbcOjbiDEkeG6p3UgdGnDqm4gbMOgIGThu6tuZwogICAgZm9yIChpbnQgayA9IDE7IGsgPD0gbjsgaysrKSB7CiAgICAgICAgaWYgKGNoZWNrKGspKSB7CiAgICAgICAgICAgIGNvdXQgPDwgazsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9