import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String s = in.nextLine();
longestRepeatSubStr(s);
}
}
private static void longestRepeatSubStr(String s) {
int maxLen = 0;
for (int i = 0; i < s.length() - 1; i++) {
for (int j = i + 1; j < s.length(); j++) {
int len = 0;
// 重复字符串的第一个串的起始下标;
int fi = i;
// 重复字符串的第二个串的起始下标
int si = j;
// 其实就是枚举,如果是重复字符串,那么起始位置后边的几个都是一样的。
// 从每个位置开始往后找。找到相同的,则循环去比较数据
while (fi < s.length() && si < s.length() && s.charAt(fi) == s.charAt(si)) {
fi++;
si++;
len++;
}
maxLen = Math.max(len, maxLen);
}
}
System.out.println(maxLen);
}
}