#P3356. AGTC

AGTC

描述
xxyy是某个有限字母表AA上的两个字符串。我们希望仅通过以下操作将xx转换为yy

  • 删除xx中的某个字母在yy的对应位置缺失。
  • 插入yy中的某个字母在xx的对应位置缺失。
  • 替换:对应位置上的字母不同。

显然,我们希望最小化所有可能的操作次数。

示例

A G T A A G T * A G G C  
| | |       |   |   | |  
A G T * C * T G A C G C  
  • 删除:底行的*
  • 插入:顶行的*
  • 替换:当顶行和底行的字母不同时

这表明,要将x=AGTCTGACGCx = \text{AGTCTGACGC}转换为y=AGTAAGTAGGCy = \text{AGTAAGTAGGC},需要进行5次操作(2次替换、2次删除和1次插入)。但如果希望最小化操作次数,可以如下进行:

A  G  T  A  A  G  T  A  G  G  C  
|  |  |        |     |     |  |  
A  G  T  C  T  G  *  A  C  G  C  

此时仅需4次操作(3次替换和1次删除)。

在本问题中,我们始终固定字符串xxyy,使得xx的字母数为mmyy的字母数为nn,且nmn \geq m

每次操作的成本为1,若无需操作则成本为0。

编写一个程序,计算将任意字符串xx转换为字符串yy所需的最小操作次数。

输入
输入由字符串xxyy及其各自长度(长度不超过1000)组成。

输出
一个整数,表示将xx转换为yy所需的最小操作次数。

输入样例 1

10 AGTCTGACGC  
11 AGTAAGTAGGC  

输出样例 1

4  

来源
马尼拉 2006