/*
TASK:balls
LANG:C
*/
#include <stdio.h>
#define MAX(q, w) ((q)>(w)?(q):(w))
#define ADD(r, e) ((a[e])==(b[r])?(1):(0))

int F[1000][1000];
char a[1001]={0}, b[1001]={0};
int lena, lenb, i, j;

int main() {
 scanf("%s", a); for(lena=0; a[lena]; lena++);
 scanf("%s", b); for(lenb=0; b[lenb]; lenb++);
 F[0][0]=ADD(0, 0);
 for(j=1; j<lena; j++) F[0][j]=MAX(F[0][j-1], ADD(0, j));
 for(i=1; i<lenb; i++) F[i][0]=MAX(ADD(i, 0), F[i-1][0]);
 for(i=1; i<lenb; i++)
  for(j=1; j<lena; j++)
   F[i][j]=MAX(F[i][j-1], MAX(F[i-1][j-1]+ADD(i,j), F[i-1][j]));
 printf("%d\n", F[lenb-1][lena-1]);
 return 0;
}
