#include<bits/stdc++.h>
int f[2001][2001];
using namespace std;
string so,st;
int main()
{
while (cin>>so>>st)
{
for (int i=0;i<=st.size();i++)
f[0][i]=0;
for (int i=0;i<=so.size();i++)
f[i][0]=0;
for (int i=1;i<=so.size();i++)
for (int j=1;j<=st.size();j++)
if (so[i-1]==st[j-1]) f[i][j]=f[i-1][j-1]+1;
else f[i][j]= max (f[i-1][j],max(f[i][j-1],f[i-1][j-1]));
cout<<f[so.size()][st.size()]<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KaW50IGZbMjAwMV1bMjAwMV07CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cmluZyBzbyxzdDsKaW50IG1haW4oKQp7Cgl3aGlsZSAoY2luPj5zbz4+c3QpCgl7CgkJZm9yIChpbnQgaT0wO2k8PXN0LnNpemUoKTtpKyspCgkJCWZbMF1baV09MDsKCQlmb3IgKGludCBpPTA7aTw9c28uc2l6ZSgpO2krKykKCQkJZltpXVswXT0wOwoJCWZvciAoaW50IGk9MTtpPD1zby5zaXplKCk7aSsrKQoJCQlmb3IgKGludCBqPTE7ajw9c3Quc2l6ZSgpO2orKykKCQkJCWlmIChzb1tpLTFdPT1zdFtqLTFdKSBmW2ldW2pdPWZbaS0xXVtqLTFdKzE7CgkJCQllbHNlIGZbaV1bal09IG1heCAoZltpLTFdW2pdLG1heChmW2ldW2otMV0sZltpLTFdW2otMV0pKTsKCQljb3V0PDxmW3NvLnNpemUoKV1bc3Quc2l6ZSgpXTw8ZW5kbDsKCQkJCQoJfQp9IA==