#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s1[2000], s2[2000], secCom[2000], lit[24];
cin.getline(s1, 2000);
int lgs1 = strlen(s1);
cin.getline(s2, 2000);
int lgs2 = strlen(s2);
int maxim = 0, lgsecCom = 0, incepSecCom = 0,
maxLit = 0, incepS1 = 0, k = -1;
for (int i = incepS1; i < lgs1 && lgs1 - i > lgsecCom; ++i){ // doar daca lung. sec. din s1 si s2
int cond = 1;
int nuEste = 1;
for (int l = 0; l <= k; ++l){ // verificam daca literele s-au gasit in S2
if (s1[i] == lit[l]){
cond = 0;
break;
}
}
if (cond == 1){
int nrLit;
for (int j = 0; j < lgs2 && lgs2 - j > lgsecCom && cond == 1; ++j ){ // ramasa de comp. este mai mare decat lg secCom
nrLit = 0;
if (isalpha(s1[i]) && s1[i] == s2[j]){
nuEste = 0;
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
if (nuEste == 1){ // retinem intr-un sir lit. care nu se gasesc in S2
++k;
lit[k] = s1[i];
}
}
}
cout << secCom;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY2hhciBzMVsyMDAwXSwgczJbMjAwMF0sIHNlY0NvbVsyMDAwXSwgbGl0WzI0XTsKICAgIGNpbi5nZXRsaW5lKHMxLCAyMDAwKTsKICAgIGludCBsZ3MxID0gc3RybGVuKHMxKTsKICAgIGNpbi5nZXRsaW5lKHMyLCAyMDAwKTsKICAgIGludCBsZ3MyID0gc3RybGVuKHMyKTsKICAgIGludCBtYXhpbSA9IDAsIGxnc2VjQ29tID0gMCwgaW5jZXBTZWNDb20gPSAwLAogICAgbWF4TGl0ID0gMCwgaW5jZXBTMSA9IDAsIGsgPSAtMTsKICAgIGZvciAoaW50IGkgPSBpbmNlcFMxOyBpIDwgbGdzMSAmJiBsZ3MxIC0gaSA+IGxnc2VjQ29tOyArK2kpeyAvLyBkb2FyIGRhY2EgbHVuZy4gc2VjLiBkaW4gczEgc2kgczIKICAgICAgICBpbnQgY29uZCA9IDE7CiAgICAgICAgaW50IG51RXN0ZSA9IDE7CiAgICAgICAgZm9yIChpbnQgbCA9IDA7IGwgPD0gazsgKytsKXsgLy8gdmVyaWZpY2FtIGRhY2EgbGl0ZXJlbGUgcy1hdSBnYXNpdCBpbiBTMgogICAgICAgICAgICBpZiAoczFbaV0gPT0gbGl0W2xdKXsKICAgICAgICAgICAgICAgIGNvbmQgPSAwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGNvbmQgPT0gMSl7CiAgICAgICAgICAgIGludCBuckxpdDsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsZ3MyICYmIGxnczIgLSBqID4gbGdzZWNDb20gJiYgY29uZCA9PSAxOyArK2ogKXsgLy8gcmFtYXNhIGRlIGNvbXAuIGVzdGUgbWFpIG1hcmUgZGVjYXQgbGcgc2VjQ29tCiAgICAgICAgICAgICAgICBuckxpdCA9IDA7CiAgICAgICAgICAgICAgICBpZiAoaXNhbHBoYShzMVtpXSkgJiYgczFbaV0gPT0gczJbal0pewogICAgICAgICAgICAgICAgICAgIG51RXN0ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaW5jZXBTZWNDb20gPSBpOwogICAgICAgICAgICAgICAgICAgIGludCBpMSA9IGk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkxIDwgbGdzMSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMVtpMV0gPT0gczJbal0peyAvLyBudW1hcmFtIGxpdC4gY29tLiBkaW4gYW1iZWxlIHNpcnVyaSBpbmNlcGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKytuckxpdDsgICAgICAgICAgICAvLyBkZSBsYSBwb3ppdGlpbGUgY3UgbGl0IGVnYWxlIGdhc2l0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKytqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChuckxpdCA+IG1heExpdCkKICAgICAgICAgICAgICAgICAgICAgICAgbWF4TGl0ID0gbnJMaXQ7ICAgICAvLyByZXRpbmVtIG5yIG1heGltIGRlIGxpdCBjb20gbGEgZmllY2FyZSBzZWMKICAgICAgICAgICAgICAgICAgICBpZiAobnJMaXQgPiBtYXhpbSl7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltID0gbnJMaXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGxnc2VjQ29tID0gc3RybGVuKHNlY0NvbSk7IC8vIHJldGluZW0gc2VjIG1heCBjb20gaW50ci11biBzaXIgY2FyZSBzZSByZXNldGVhemEgZGUgbGEgMCBkZSBmaWVjYXJlIGRhdGEgY2FuZCBwcmltZXN0ZSBhbHRhIHNlY3YKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZ3NlY0NvbTsgKytpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY0NvbVtpXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc3RybmNweShzZWNDb20sIHMxICsgaW5jZXBTZWNDb20sIG5yTGl0KTsKICAgICAgICAgICAgICAgICAgICAgICAgbGdzZWNDb20gPSBzdHJsZW4oc2VjQ29tKTsgICAvLyBhY3R1YWxpemFtIGx1bmcgc2VjQ29tCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGluY2VwUzEgPSBpbmNlcFNlY0NvbSArIG1heExpdDsgLy8gcG96IGRlIGxhIGNhcmUgc2UgdmEgY29udGludWEgY29tcC4gaW4gUzEKICAgICAgICAgICAgaWYgKG51RXN0ZSA9PSAxKXsgICAgICAgICAgICAgICAvLyByZXRpbmVtIGludHItdW4gc2lyIGxpdC4gY2FyZSBudSBzZSBnYXNlc2MgaW4gUzIKICAgICAgICAgICAgICAgICsrazsKICAgICAgICAgICAgICAgIGxpdFtrXSA9IHMxW2ldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBzZWNDb207CglyZXR1cm4gMDsKfQ==