#include <stdio.h>
#include <string.h>
static const int MAX = 100;
char str1[MAX], str2[MAX], str3[MAX];
int c[MAX][MAX], f[MAX][MAX];
inline int max(int a, int b) {
return a>b ? a : b;
}
int dp(int i, int j) {
if (c[i][j] == -1) {
if (i==0 || j==0) {
c[i][j] = 0;
} else if (str1[i-1] == str2[j-1]) {
c[i][j] = dp(i-1, j-1) + 1;
f[i][j] = 1;
} else {
if (dp(i, j-1) > dp(i-1, j)) {
c[i][j] = dp(i, j-1);
f[i][j] = 2;
} else {
c[i][j] = dp(i-1, j);
f[i][j] = 3;
}
}
}
return c[i][j];
}
void fill(int i, int j, int len) {
if (len < 0) {
return;
}
if (f[i][j] == 1) {
str3[len] = str1[i-1];
fill(i-1, j-1, len-1);
} else if (f[i][j] == 2) {
fill(i, j-1, len);
} else if (f[i][j] == 3) {
fill(i-1, j, len);
}
}
int main() {
while (1) {
memset(c, -1, sizeof(c));
memset(f, 0, sizeof(f));
scanf("%s%s", str1, str2);
int len = dp(strlen(str1), strlen(str2));
str3[len] = 0;
fill(strlen(str1), strlen(str2), len-1);
printf("%s\n", str3);
}
return 0;
}