#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> using namespace std; const int N = 505; char s1[N], s2[N]; int dp[N][N]; void solve() { int len1 = strlen(s1+1); int len2 = strlen(s2+1); memset(dp, 0, sizeof(dp)); for(int i = 0; i <= len2; i++) { dp[0][i] = 0; } for(int i = 0; i <= len1; ++i) { dp[i][0] = 0; } for(int i = 1; i <= len1; ++i) { for(int j = 1; j <= len2; ++j) { if(s1[i] == s2[j]) { dp[i][j] = dp[i-1][j-1] + 1; } else dp[i][j] = max(dp[i-1][j], dp[i][j-1]); } } cout << dp[len1][len2] << endl; } int main() { while(scanf("%s%s", s1+1, s2+1) == 2) { solve(); } return 0; }