Наоборот, по моему я то как раз и предлагаю простой вариант.
А как ещё реализовать такой алгоритм ?
Каждому символу ставим в соответствие допустимый ему "алфавит" - массив цифр.
Размер и содержимое такого "алфавита" у символов разное.
Перебор - это фактически последовательное изменение индексов алфавитов.
(Ограничение по максимуму - это равенство всех индексов 0.)
---
Поскольку имеется дополнительное ограничение - разные символы не могут
иметь одно цифровое значение - то незачем считать формулу для
всех комбинаций. Перед формулой надо проверить допустимость
комбинации на совпадения значений. И всё.