#!/usr/bin/ruby
#
## https://rosettacode.org/wiki/Levenshtein_distance
#
func lev(s,t) {
s == '' && return t.len;
t == '' && return s.len;
var s1 = s.slice(1);
var t1 = t.slice(1);
s.first == t.first ? __FUNC__(s1, t1)
: 1+[
__FUNC__(s1, t1),
__FUNC__(s, t1),
__FUNC__(s1, t )
].min;
};
var l = lev("abcz", "aecd");
say l
assert_eq(l, 2)