import java.util.*;
/**
* 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String a = in.nextLine();
String b = in.nextLine();
Map<String, Integer> map = new HashMap<>();
if (a.length() > b.length()) {
getMaxChild(a, b, map);
} else {
getMaxChild(b, a, map);
}
}
}
/**
* 求最长公共子串
*/
private static void getMaxChild(String a, String b, Map<String, Integer> map) {
// 先遍历较长的字符串,获取所有子串
for (int i = 0; i < a.length(); i++) {
for (int j = i + 1; j <= a.length(); j++) {
map.put(a.substring(i, j), j - i);
}
}
// 再遍历较短的字符串,找到最长的那个子串
String maxStr = "";
Integer maxLength = 0;
for (int i = 0; i < b.length(); i++) {
for (int j = i + 1; j < b.length(); j++) {
String key = b.substring(i, j);
// 此处条件要大于,不能等于,可以保证最后求出的是第一个出现的最长子串
if (map.containsKey(key) && map.get(key) > maxLength) {
maxLength = map.get(key);
maxStr = key;
}
}
}
System.out.println(maxStr);
}
}