Изменения в ЕГЭ-2023 по информатике
‍

Использование permutations(iter, col) - перестановки, когда каждый символ встречается один раз
Использование product(iter, repeat=col) - комбинации, длинной col

Светлана составляет коды из букв слова ПАРАБОЛА. 
Код должен состоять из 8 букв, и каждая буква в нём должна встречаться столько же раз, сколько в заданном слове. 
Кроме того, в коде не должны стоять рядом две гласные и две согласные буквы. Сколько кодов может составить Светлана?

from itertools import *
k=0
ss = set()
for i in permutations('парабола', 8):
    s = ''.join(i)
    if ('ао' not in s) and ('оа' not in s) and ('аа' not in s):
        if ('пр' not in s) and ('пб' not in s) and ('пл' not in s) and ('рп' not in s) and ('рб' not in s) and ('рл' not in s) and ('бп' not in s) and ('бр' not in s) and ('бл' not in s) and ('лп' not in s) and ('лр' not in s) and ('лб' not in s):
            k+=1
            ss.add(s)
print(ss)
print(len(ss))

ss= set() еобходима, так как при наскольких одинаковых буквах в слове, в перестановках они будут расцениваться как разные бквы т.е
имя три "А" слова "ПАРАБОЛА" и "ПАРАБОЛА" будут разными

№ 47005
Светлана составляет коды из букв слова ПАРАБОЛА. Код должен состоять из 8 букв, 
и каждая буква в нём должна встречаться столько же раз, сколько в заданном слове. Кроме того, в коде 
не должны стоять рядом две гласные и две согласные буквы. Сколько кодов может составить Светлана?

import itertools
s = 'ПАРАБОЛА'
k=set()
for i in itertools.permutations(s):
    ss = ''.join(i)
    flag = 1
    for f in range(7):
        if ((ss[f] in 'АО') and (ss[f+1] in 'АО')) or ((ss[f] in 'ПРБЛ') and (ss[f+1] in 'ПРБЛ')):
            #print(ss[f],ss[f+1], ss)
            flag = 0
    if flag==1:
        k.add(ss)
        #print(ss)
print(len(k))

№ 37143

Ученица составляет 5-буквенные слова из букв ГЕПАРД. При этом в каждом слове ровно одна буква Г, слово не может начинаться на букву 
А и заканчиваться буквой Е. Какое количество слов может составить ученица?

from itertools import *
c = 0
for w in product('ГЕПАРД', repeat=5):
    if w.count('Г')==1 and w[0]!='А' and w[-1]!='Е':
        c += 1
print(c)

№ 40983
Георгий составляет коды из букв своего имени. Код должен состоять из 7 букв, и каждая буква в нём должна встречаться 
столько же раз, сколько в имени Георгий. Кроме того, одинаковые буквы в коде не должны стоять рядом. 
Сколько кодов может составить Георгий?

import itertools
s = 'георгий'
k=set()
for i in itertools.permutations(s):
    ss = ''.join(i)
    if ('гг' not in ss):
        k.add(ss)
print(len(k))