#include
#include
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;
}