#include <iostream>
#include <cstring>

using namespace std;

int main() {
	string x, y;
	int A[2][1001];
	while (cin >> x  >> y ) 
	{
		for (int i = 0; i < 2; i++){
			for (int j = 0; j < 1001; j++){
				A[i][j] = 0;		
			}
		}
		for (int i = 0; i < x.length(); i++){
			for (int j = 0; j < y.length(); j++){
				if (x[i] == y[j]) A[i % 2][(j + 1)] = 1 + A[(i + 1) % 2][j];
				else A[i % 2][j + 1] = max(A[(i + 1) % 2][j + 1], A[i % 2][j]);
			}
		}
		cout <<  A[(x.length() + 1) % 2][y.length()] << endl;
	}
	return 0;
}