#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string x, y;
cin >> x >> y;
int L[x.length()+1][y.length()+1];
// Initialize first row and column
for (int i = 0; i <= x.length(); i++)
L[i][0] = 0;
for (int j = 0; j <= y.length(); j++)
L[0][j] = 0;
// Fill table
for (int i = 1; i <= x.length(); i++) {
for (int j = 1; j <= y.length(); j++) {
if (x[i-1] == y[j-1])
L[i][j] = L[i-1][j-1] + 1;
else
L[i][j] = max(L[i-1][j], L[i][j-1]);
}
}
cout << "LCS length = " << L[x.length()][y.length()] << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgeCwgeTsKICAgIGNpbiA+PiB4ID4+IHk7CiAgICBpbnQgTFt4Lmxlbmd0aCgpKzFdW3kubGVuZ3RoKCkrMV07CgogICAgLy8gSW5pdGlhbGl6ZSBmaXJzdCByb3cgYW5kIGNvbHVtbgogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0geC5sZW5ndGgoKTsgaSsrKQogICAgICAgIExbaV1bMF0gPSAwOwogICAgZm9yIChpbnQgaiA9IDA7IGogPD0geS5sZW5ndGgoKTsgaisrKQogICAgICAgIExbMF1bal0gPSAwOwoKICAgIC8vIEZpbGwgdGFibGUKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHgubGVuZ3RoKCk7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IHkubGVuZ3RoKCk7IGorKykgewogICAgICAgICAgICBpZiAoeFtpLTFdID09IHlbai0xXSkKICAgICAgICAgICAgICAgIExbaV1bal0gPSBMW2ktMV1bai0xXSArIDE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIExbaV1bal0gPSBtYXgoTFtpLTFdW2pdLCBMW2ldW2otMV0pOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8ICJMQ1MgbGVuZ3RoID0gIiA8PCBMW3gubGVuZ3RoKCldW3kubGVuZ3RoKCldIDw8IGVuZGw7Cn0K