#include #include #include #include #include #include using namespace std; typedef long long ll; const int maxn = 105; const ll INF = 1e16; string a, b; int dp[1005][1005]; int rec(int i, int j) { if(i < 0 or j < 0) { return 0; } if(dp[i][j] != -1) { return dp[i][j]; } int res = 0; if(a[i] == b[j]) { res = max(res, rec(i - 1, j - 1) + 1); } res = max(res, rec(i - 1, j)); res = max(res, rec(i, j - 1)); dp[i][j] = res; return res; } int main() { memset(dp, -1, sizeof dp); cin >> a >> b; cout << rec((int) a.size() - 1, (int) b.size() - 1) << endl; return 0; }