n, m = gets.chomp.split(" ").map(&:to_i) s = gets.chomp t = gets.chomp INF = 10 ** 9 dp = [] (s.length + 1).times do |i| dp[i] = [] (t.length + 1).times do |j| dp[i][j] = INF end end dp[0][0] = 0 (s.length + 1).times do |i| (t.length + 1).times do |j| # 変更 if i > 0 && j > 0 if s[i - 1] == t[j - 1] dp[i][j] = [dp[i][j], dp[i-1][j-1]].min else dp[i][j] = [dp[i][j], dp[i-1][j-1] + 1].min end end # 削除 if i > 0 dp[i][j] = [dp[i][j], dp[i-1][j] + 1].min end # 挿入 if j > 0 dp[i][j] = [dp[i][j], dp[i][j-1] + 1].min end end end puts dp[-1][-1]