#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
string s1, s2;
while(cin >> s1 >> s2){
if(s1.length() > s2.length()) //使较小的字符串在前
swap(s1, s2);
vector<vector<int> > dp(s1.length() + 1, vector<int>(s2.length() + 1, 0)); //dp[i][j]表示到s1第i个个到s2第j个为止的公共子串长度
int max = 0, end = 0;
for(int i = 1; i <= s1.length(); i++){
for(int j = 1; j <= s2.length(); j++){
if(s1[i - 1] == s2[j - 1]) //如果该两位相同
dp[i][j] = dp[i - 1][j - 1] + 1; //则增加长度
else //否则
dp[i][j] = 0; //该位置为0
if(dp[i][j] > max){ //更新最大长度
max = dp[i][j];
end = i - 1;
}
}
}
cout << s1.substr(end - max + 1, max) << endl; //输出最长子串
}
return 0;
}