#include <iostream>
#include <cstring>
using namespace std;

int main() {
	char s1[1000], s2[1000], secCom[1000];
    cin.getline(s1, 1000);
    int lgs1 = strlen(s1);
    cin.getline(s2, 1000);
    int lgs2 = strlen(s2);
    int maxim = 0, lgsecCom = 0, incepSecCom = 0,
    maxLit = 0, incepS1 = 0;
    for (int i = incepS1; i < lgs1 && lgs1 - i > lgsecCom; ++i){ // doar daca lung. sec. din s1 si s2
        for (int j = 0; j < lgs2 && lgs2 - j > lgsecCom; ++j ){ // ramasa de comp. este mai mare decat lg secCom
            int nrLit = 0;
            if (isalpha(s1[i]) && s1[i] == s2[j]){
                incepSecCom = i;
                int i1 = i;
                while (i1 < lgs1){
                    if (s1[i1] == s2[j]){ // numaram lit. com. din ambele siruri incepand
                        ++nrLit;            // de la pozitiile cu lit egale gasite
                        ++j;
                        ++i1;
                    }
                    else {
                        break;
                    }
                }
                if (nrLit > maxLit)
                    maxLit = nrLit;     // retinem nr maxim de lit com la fiecare sec
                if (nrLit > maxim){
                    maxim = nrLit;
                    lgsecCom = strlen(secCom); // retinem sec max com intr-un sir care se reseteaza de la 0 de fiecare data cand primeste alta secv
                    for (int i = 0; i < lgsecCom; ++i){
                        secCom[i] = 0;
                    }
                    strncpy(secCom, s1 + incepSecCom, nrLit);
                    lgsecCom = strlen(secCom);   // actualizam lung secCom
                }
            }
        }
        incepS1 = incepSecCom + maxLit; // poz de la care se va continua comp. in S1
    }
    cout << secCom;
	return 0;
}