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); // } // } // }