#include <iostream>
#include <string>
using namespace std;
const int MAX = 3001;
int P[MAX][MAX] = {0};
int max_2(int a, int b) {
return (a > b) ? a : b;
}
int main() {
string A, B;
cin >> A >> B;
int a = A.size();
int b = B.size();
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= b; j++) {
if (A[i - 1] == B[j - 1]) {
P[i][j] = P[i - 1][j - 1] + 1;
} else {
P[i][j] = max_2(P[i - 1][j], P[i][j - 1]);
}
}
}
cout << P[a][b] << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWCA9IDMwMDE7CmludCBQW01BWF1bTUFYXSA9IHswfTsKCmludCBtYXhfMihpbnQgYSwgaW50IGIpIHsKICAgIHJldHVybiAoYSA+IGIpID8gYSA6IGI7Cn0KCmludCBtYWluKCkgewogICAgc3RyaW5nIEEsIEI7CiAgICBjaW4gPj4gQSA+PiBCOwoKICAgIGludCBhID0gQS5zaXplKCk7CiAgICBpbnQgYiA9IEIuc2l6ZSgpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IGI7IGorKykgewogICAgICAgICAgICBpZiAoQVtpIC0gMV0gPT0gQltqIC0gMV0pIHsKICAgICAgICAgICAgICAgIFBbaV1bal0gPSBQW2kgLSAxXVtqIC0gMV0gKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgUFtpXVtqXSA9IG1heF8yKFBbaSAtIDFdW2pdLCBQW2ldW2ogLSAxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBQW2FdW2JdIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQ==