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"
