#include<iostream>
#include<string>
using namespace std;
int LCS[1024][1024];
int LCSlen(string &x,int x1,string &y,int y1){
for(int i = 0; i <= x1; i++)
LCS[i][y1]=0;
for(int j=0;j<=y1;j++)
LCS[x1][j]=0;
for(int i = x1 - 1; i >= 0; i--){
for(int j = y1 - 1; j >= 0; j--){
LCS[i][j] = LCS[i+1][j+1];
if(x[i] == y[j])
LCS[i][j]++;
if(LCS[i][j+1]>LCS[i][j])
LCS[i][j]=LCS[i][j+1];
if(LCS[i+1][j]>LCS[i][j])
LCS[i][j]=LCS[i+1][j];
}
}
return LCS[0][0];
}
int main()
{
string x;
string y;
cin >> x >> y;
int x1 = x.length() , y1 = y.length();
int ans = LCSlen( x, x1, y, y1);
cout << ans << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IExDU1sxMDI0XVsxMDI0XTsKaW50IExDU2xlbihzdHJpbmcgJngsaW50IHgxLHN0cmluZyAmeSxpbnQgeTEpewogIAlmb3IoaW50IGkgPSAwOyBpIDw9IHgxOyBpKyspCiAgCUxDU1tpXVt5MV09MDsKICAJCiAgCWZvcihpbnQgaj0wO2o8PXkxO2orKykKICAJTENTW3gxXVtqXT0wOwogIAkKICAJZm9yKGludCBpID0geDEgLSAxOyBpID49IDA7IGktLSl7CiAgCWZvcihpbnQgaiA9IHkxIC0gMTsgaiA+PSAwOyBqLS0pewogIAkKICAJTENTW2ldW2pdID0gTENTW2krMV1baisxXTsKICAJCiAgCWlmKHhbaV0gPT0geVtqXSkKICAJTENTW2ldW2pdKys7CiAgCQogIAlpZihMQ1NbaV1baisxXT5MQ1NbaV1bal0pCiAgCUxDU1tpXVtqXT1MQ1NbaV1baisxXTsKICAJCiAgCWlmKExDU1tpKzFdW2pdPkxDU1tpXVtqXSkKICAJTENTW2ldW2pdPUxDU1tpKzFdW2pdOwogIAkKICAJfQogIAl9CnJldHVybiBMQ1NbMF1bMF07Cn0gCgppbnQgbWFpbigpCnsKc3RyaW5nIHg7CnN0cmluZyB5OwpjaW4gPj4geCA+PiB5OwppbnQgeDEgPSB4Lmxlbmd0aCgpICwgeTEgPSB5Lmxlbmd0aCgpOwppbnQgYW5zID0gTENTbGVuKCB4LCB4MSwgeSwgeTEpOwpjb3V0IDw8IGFucyA8PCBlbmRsOwpyZXR1cm4gMDsKfQ==