#include using namespace std;
const int CHAR_LEN = 31;
const int WORD_SIZE = 101;
char a[WORD_SIZE][CHAR_LEN], b[WORD_SIZE][CHAR_LEN];
int dp[WORD_SIZE][WORD_SIZE];
int e[WORD_SIZE][WORD_SIZE];
int pIndex[WORD_SIZE];
int pIdx = 0;
void printLCS(int i, int j) {
if (0 == i || 0 == j) return;
if (0 == e[i][j]) {
printLCS(i - 1, j - 1);
pIndex[pIdx++] = i - 1;
} else if (1 == e[i][j])
printLCS(i - 1, j);
else
printLCS(i, j - 1);
}
int main() {
while (cin >> a[0]) {
int len1 = 1;
while (cin >> a[len1] && strcmp(a[len1], "#"))
++len1;
int len2 = 0;
while (cin >> b[len2] && strcmp(b[len2], "#"))
++len2;
memset(e, 0, sizeof(e));
memset(pIndex, -1, sizeof(pIndex));
pIdx = 0;
for (int i = 0; i <= len1; ++i)
dp[i][0] = 0;
for (int i = 0; i <= len2 ; ++i)
dp[0][i] = 0;
for (int i = 1; i <= len1; ++i)
for (int j = 1; j <= len2; ++j) {
if (0 == strcmp(a[i - 1], b[j - 1])) {
e[i][j] = 0;
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
if (dp[i - 1][j] >= dp[i][j - 1]) {
e[i][j] = 1;
dp[i][j] = dp[i - 1][j];
} else {
e[i][j] = -1;
dp[i][j] = dp[i][j - 1];
}
}
}
printLCS(len1, len2);
for (int i = 0; i < dp[len1][len2] - 1; ++i)
cout << a[pIndex[i]] << " ";
cout << a[pIndex[dp[len1][len2] - 1]] << endl;
}
return 0;
}