#include using namespace std; const int N = 1010; int n, m; char a[N], b[N]; int f[N][N]; int main() { // 递推式出现f[i-1][j-1],如果i,j从0开始会出现负值,所以下标从1开始 cin >> n >> m >> a + 1 >> b + 1; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { if (a[i] == b[j]) f[i][j] = f[i - 1][j - 1] + 1; else f[i][j] = max(f[i - 1][j], f[i][j - 1]); } printf("%d", f[n][m]); return 0; }