Тут вообще не нужны никакие циклы, элементарная задача на комбинаторику.
Всего согласных - 5, а гласных - 2. Есть
4 × 5³ × 2 способа разместить согласные на 3-х местах из первых 4-х,
4 × 3 / 2 × 5² × 2² - на двух местах,
4 × 5 × 2³ - на одном месте
и 2⁴ способов составить слово без согласных.
Сумму этих способов умножаем на 2, т.к. на последнем месте стоит гласная, а их - две.
И нечётность номера означает, что нужно взять только каждое второе из получившегося множества слов. Почему каждое второе? Потому что букв - 7, это число нечётное, поэтому гласные будут попеременно попадать то на чётные, то на нечётные индексы. Так что итог делим на 2.
Программа:
print(4 * 2 * (5 ** 3 + 5 ** 2 * 3 + 5 * 2 ** 2 + 2))
Ответ:
1776 слов
P.S. И какое отношение имеет слово "ЕЛОПЕР", скопированное двумя ботами в их "ответы", к слову "ПРЕСТОЛ" из условия задачи? Вопрос - риторический.
Условие в твоём внутреннем цикле также никакого отношения к условию задачи не имеет.
А вот код для проверки как раз можно сделать и перебором:
s = "ЕОЛПРСТ"
k = 0
for c1 in s:
for c2 in s:
for c3 in s:
for c4 in s:
p = c1 + c2 + c3 + c4
if p.count("Л") + p.count("П") + p.count("Р") + p.count("С") + p.count("Т") <= 3:
k += 1
print(k)
Видим, что ответ тот же.
Перебираем только 4 позиции, т.к. последняя добавляет множитель 2, а требование к нечётности индекса убирает множитель 2.
k=0
for c1 in s:
for c2 in s:
for c3 in s:
for c4 in s:
for c5 in s:
p=c1+c2+c3+c4+c5
if ("Л" in p)<=3 or ("П" in p)<=3 or ("Р" in p)<=3:
k+=1
if k%3==0 and p[4]=="Е" or p[4]=="О":
print(k,p)