Размышляя вслух, мне кажется, что эта проблема сводится к комбинаторной задаче.
В общем случае для строки S длины L имеется всего C (L, K) (бином)коэффициент) позиции, которые могут быть заменены и поэтому (ALPHABET_SIZE ^ K) * C (L, K) целевые строки T с расстояния Хэмминга K.
Биномиальный коэффициент может быть довольно легко вычислен с использованием динамического программирования и ПаскаляТреугольник ... Не нужно сходить с ума от факториала и т. Д. *
Теперь, когда рассматривается один строковый случай, работать с несколькими строками немного сложнее, так как вы можете удвоить количество целей.Интуитивно понятно, что если S1 находится K далеко от S2, то обе строки будут генерировать одинаковый набор целей, поэтому в этом случае вы не удваиваете счет.Это последнее утверждение может быть длинным, поэтому я обязательно сказал «интуитивно»:)
Надеюсь, это поможет,