import java.util.Scanner;
//动态规划
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) { // 注意 while 处理多个 case
String[] a = in.nextLine().split("");
String[] b = in.nextLine().split("");
int[][] c = new int[a.length + 1][b.length + 1];
int max = 0;
for (int i = 1; i < a.length + 1; i++) {
for (int j = 1; j < b.length + 1; j++) {
if (a[i - 1].equals(b[j - 1])) {
c[i][j] = c[i - 1][j - 1] + 1;
if (max < c[i][j]) max = c[i][j];
} else {
c[i - 1][j - 1] = 0;
}
}
}
System.out.print(max);
}
}
}
// 穷举法
// public class Main {
// public static void main(String[] args) {
// Scanner in = new Scanner(System.in);
// while (in.hasNext()) { // 注意 while 处理多个 case
// String a = in.nextLine();
// String b = in.nextLine();
// if (a.length() > b.length()) {
// String t = b;
// b = a;
// a = t;
// }
// int max = 0;
// for (int i = 0; i < b.length(); i++) {
// for (int j = b.length(); j > i ; j--) {
// String t = b.substring(i, j);
// if (a.contains(t)) {
// max = max < t.length() ? t.length() : max;
// //算出最大的就可以break了
// break;
// }
// }
// }
// System.out.println(max);
// }
// }
// }