#include <iostream>
#include <vector>
using namespace std;
int main() {
string s,t;
cin >> t >> s;
if(s.size() > t.size()) {
swap(s,t);
}
vector<vector<int>> dq(s.size() + 1,vector<int>(t.size()+1));
int lMax = 0;
int maxEnd = 0;
for(auto i = 1; i <= s.size(); i++) {
for(auto j = 1; j <= t.size(); j++) {
auto& cur = dq[i][j];
auto& pre = dq[i-1][j-1];
if(s[i-1] == t[j-1]) {
cur = pre + 1;
if(cur > lMax) {
lMax = cur;
maxEnd = i-1;
}
} else {
cur = 0;
}
}
}
cout << s.substr(maxEnd - lMax+1, lMax) << endl;
}
// 64 位输出请用 printf("%lld")