#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#define inf 0x3f3f3f3f
#define ll __int64
using namespace std;
char s1[10050],s2[10050];
int dp[10050][10050],l1,l2;
int main()
{
int i,j;
while(~scanf("%s%s",s1,s2))
{
l1=strlen(s1);
l2=strlen(s2);
memset(dp,0,sizeof dp);
for(i=1;i<=l1;i++)
{
for(j=1;j<=l2;j++)
{
if(s1[i-1]==s2[j-1])
dp[i][j]=max(dp[i-1][j-1]+1,dp[i][j]);
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
printf("%d\n",dp[l1][l2]);
}
return 0;
}