def solve():
s = input()
ans = 0
i = 0
j = i+1
for l in range(len(s), 0, -1): i = 0
j = i+1
while i+l <= len(s):
j=i+1
while j+l <= len(s):
if s[i:i+l] == s[j:j+l]:
print(l)
return
j += 1
i += 1
print(0)
solve()
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);
string s;
cin>>s;
int ans = 0;
for(int i = 0 ; i<s.size();i++)
{
for(int j=i+1 ; j<s.size();j++)
{
if(s[i]==s[j]){
int cnt=1;
while(j+cnt<s.size() && s[i+cnt]==s[j+cnt]) cnt++;
if(cnt >ans)ans =cnt;
}
}
}
cout<<ans;
return 0;
}
1487A - Arena | 1520D - Same Differences |
376A - Lever | 1305A - Kuroni and the Gifts |
1609A - Divide and Multiply | 149B - Martian Clock |
205A - Little Elephant and Rozdil | 1609B - William the Vigilant |
978B - File Name | 1426B - Symmetric Matrix |
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |