explain the levenshtein distance recursive algorithm