added recursive levenshtein implementation