char s[1002],q[1002];
f[1001][1001];
max(a,b){return a>b?a:b;}
main(){
while(~scanf("%s%s",s+1,q+1)){
memset(f,0,sizeof(f));
int l1=strlen(s+1),l2=strlen(q+1),i=1,j=1;
for(;i<=l1;++i)
for(;j<=l2;++j)
if(s[i]==q[j])f[i][j]=f[i-1][j-1]+1;
else f[i][j]=max(f[i-1][j],f[i][j-1]);
printf("%d\n",f[l1][l2]);
}
return 0;
}