combinatorics modular method
Levenshtein distance algorithm