/*
TASK:balls
LANG:C++
*/

    #include <iostream>
    #include <string>
    #define MAXN 1001
    using namespace std;
    
    int main()
    {
        char achar[MAXN], bchar[MAXN];
        int n, m, i, j, a[MAXN], b[MAXN], **F, t, Fi1j1, Fi1j, Fij1;  
                                        
        cin>>achar>>bchar;
        n=strlen(achar);      
        m=strlen(bchar); 
        
        F=new int* [n+1];
        for(i=0;i<=n;i++) F[i]=new int [m+1];
        
        for(i=1;i<=n;i++) a[i]=achar[i-1]-'a'+1;
        for(i=1;i<=m;i++) b[i]=bchar[i-1]-'a'+1;

        for(i=0;i<=n;i++) F[i][0]=0;
        for(j=1;j<=m;j++) F[0][j]=0;
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
            {
                            if(a[i]==b[j]) t=1;
                            else t=0;
                            Fi1j1=F[i-1][j-1]+t;          
                            Fi1j=F[i-1][j];               
                            Fij1=F[i][j-1];              
                            
                            if( Fi1j1 > Fi1j )           
                                if( Fi1j1 > Fij1) F[i][j]=Fi1j1;
                                else F[i][j] = Fij1;
                            else if( Fi1j > Fij1 ) F[i][j] = Fi1j;
                                 else F[i][j] = Fij1;
            }
        cout<<F[n][m]<<endl;
        for(i=0;i<=n;i++) delete F[i];
        delete F;
        return 0;
    }
