#include <iostream>
#include <fstream>
using namespace std;
string A, B;
int memo[3005][3005];
int lcs(int i, int j) {
    if(i == -1 or j == -1) {
        return 0;
    }
    if(memo[i][j] != -1) {
        return memo[i][j];
    }
    int result = 0;
    if(A[i] == B[j]) {
        result = max(result, lcs(i - 1, j - 1) + 1);
    }
    result = max(result, lcs(i - 1, j));
    result = max(result, lcs(i, j - 1));
    return memo[i][j] = result;
}
int main()
{
    cin >> A >> B;
    for(int i = 0; i < 3004; i++) {
        for(int j = 0; j < 3004; j++) {
            memo[i][j] = -1;
        }
    }
    cout << lcs(A.size() - 1, B.size() - 1) << endl;
    return 0;
}
