Я бы выбрал простой метод грубой силы, хотя понимаю, что число перестановок может возрасти, поскольку число равно 26! / (26-x)!который может быть довольно большим, так как для 3 - 15 600 перестановок, а для 5 - 7 893 600 перестановок, что не совсем мало.По сути, вы можете просто просмотреть все значения с помощью циклов в циклах, которые, к сожалению, будут равны O (n ^ x), где x - это количество символов с момента размещения циклов, вызывающих сложность.
Что-торассмотреть, насколько хорошо вы исследуете сложность здесь.Например, в то время как вы могли бы подумать о том, как стать хитрее в первой паре циклов, чтобы избежать дублирования, третий цикл становится немного сложнее, хотя, если вы начали со Списка из 26 букв и удалили предыдущие, это приведет кпоследний цикл будет просто итеративным, поскольку вы знаете, что дубликатов не существует, хотя это может быть дорого с точки зрения использования памяти при создании копий списка при каждом проходе из внешнего цикла.Таким образом, в первый раз вы пройдете через AB_, а затем AC_ и т. Д., Но копирование списка может оказаться там, где это будет дорогостоящим с точки зрения операций, поскольку тысячи раз копировался бы список, что могло бы задаться вопросомесли это более эффективно, чем сравнение.