let lev_iter s1 s2 = let m = String.length s1 in let n = String.length s2 in let prev = Array.make (n + 1) 0 in let curr = Array.make (n + 1) 0 in for j = 0 to n do prev.(j) <- j done; for i = 1 to m do curr.(0) <- i; for j = 1 to n do if s1.[i - 1] = s2.[j - 1] then curr.(j) <- prev.(j - 1) else begin let a = prev.(j) in let b = curr.(j - 1) in let c = prev.(j - 1) in let m1 = if a < b then a else b in curr.(j) <- (if m1 < c then m1 else c) + 1 end done; for j = 0 to n do prev.(j) <- curr.(j) done done; prev.(n) ;; lev_iter "kitten" "sitting" + lev_iter "saturday" "sunday" + lev_iter "abc" "abc" + lev_iter "" "abcde" + lev_iter "intention" "execution"