def ascan; gets.split.map(&:to_i); end def scan; gets.to_i; end def editDistance(str1,str2) d = Array.new(str1.size+1){Array.new(str2.size+1)} 0.upto(str1.size){|i| d[i][0] = i} 0.upto(str2.size){|j| d[0][j] = j} 1.upto(str1.size){|i| 1.upto(str2.size){|j| d[i][j] = [d[i][j-1] + 1, d[i-1][j] + 1, d[i-1][j-1] + (str1[i-1] == str2[j-1] ? 0 : 1)].min } } # d.each{|l| puts l*" "} return d[str1.size][str2.size] end gets p editDistance(gets.chomp, gets.chomp)