Implementation of Damerau-Levenshtein distance, computed as the
minimum number of operations needed to transform one string into the other,
where an operation is defined as an insertion, deletion, or substitution of a
single character, or a transposition of two adjacent characters.