import java.util.Scanner;
/**
* @author Dreams
* @program Niuke
* @description
* @create 2021-09-16 09:23
**/
public class Main {
/**
* abcdefghijklmnop
* abcsafjklmnopqrstuvw
* <p>
* dp[i][j]:短字符串中的第i个字符,在长字符串中以其结尾的公共字符串最大长度
* a b
* a b c d e f j
* a b d c d a e
* a 1 0 0 0 0 0
* b 0 2 0 0 0 0
* c 0 0 0 3 0 0
* e 0 0 0 0 0 1
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str1 = sc.nextLine();
String str2 = sc.nextLine();
if (str1.length() > str2.length()) {
String tmp = str1;
str1 = str2;
str2 = tmp;
}
int len1 = str1.length();
int len2 = str2.length();
char[] c1 = str1.toCharArray();
char[] c2 = str2.toCharArray();
int[][] dp = new int[len1][len2];
for (int i = 0; i < len2; i++) {
if (c1[0] == c2[i]) {
dp[0][i] = 1;
}
}
int maxI = 0;
int maxj = 0;
int max = 1;
for (int i = 1; i < len1; i++) {
for (int j = 1; j < len2; j++) {
if (c1[i] == c2[j]) {
dp[i][j] = Math.max(1, dp[i][j]);
}
if (c1[i] == c2[j] && c1[i - 1] == c2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
if (max < dp[i][j]) {
max = dp[i][j];
maxI = i;
}
}
}
System.out.println(str1.substring(maxI-max + 1, maxI + 1));
}
}
}