小明晚上做了一个梦,梦里他得到了两个字符串S和T,如果小明从S串中截取一个子串A、从T串中截取一个子串B,那么他能得到的金币数量Money = 4*LCS(A, B) - |A| - |B|.小明想获得最多的金币,但他不知道该怎么截,你能帮帮他吗?
注意:
LCS(A,B)的意思是:字符串A和字符串B的最长公共子序列的长度
如果X是一个字符串,|X|的意思是字符串X的长度
小明晚上做了一个梦,梦里他得到了两个字符串S和T,如果小明从S串中截取一个子串A、从T串中截取一个子串B,那么他能得到的金币数量Money = 4*LCS(A, B) - |A| - |B|.小明想获得最多的金币,但他不知道该怎么截,你能帮帮他吗?
注意:
LCS(A,B)的意思是:字符串A和字符串B的最长公共子序列的长度
如果X是一个字符串,|X|的意思是字符串X的长度
第一行给出两个正整数n和m(1 <= n, m <= 5000),表示字符串S和字符串T的长度.
第二行给出一个长度为n的字符串S.
第三行给出一个长度为m的字符串T.
4 5 abba babab
5
对于上述样例,我们从S串中截取abb,从T串中截取abab,此时LCS(abb, abab) = 3
小明获得的金币数Money = 4*LCS(abb,abab) - |abb| - |abab| = 4 * 3 - 3 - 4 = 5