Een halsketting bestaat uit een snoer waaraan blokjes hangen. Op elk blokje staat één letter van het alfabet. Hieronder zie je bijvoorbeeld een halsketting waarvan de blokjes het woord JESSICA spellen.

halsketting
Halsketting met blokjes die de naam JESSICA spellen.

De blokjes kunnen langs het snoer van de halsketting geschoven worden. Als we in de halsketting uit het voorbeeld het blokje met de letter J naar het andere uiteinde schuiven, dan spellen we op die manier het woord ESSICAJ. We kunnen ook de laatste twee blokjes CA nemen en naar het andere uiteinde schuiven, om zo het woord CAJESSI te spellen.

Opgave

Een $$(k, n)$$-halsketting is een string (str) van $$n$$ letters die gekozen zijn uit de eerste $$k$$ ($$1 \leq k \leq 26$$) letters van het alfabet. Zo is ABBEACEEA een voorbeeld van een $$(5, 9)$$-halsketting. Merk op het niet nodig is dat alle mogelijke letters ook daadwerkelijk in de string voorkomen.

Twee halskettingen $$h_1$$ en $$h_2$$ zijn gelijk als $$h_1$$ kan omgevormd worden tot $$h_2$$ door enkele blokjes van het ene uiteinde naar het andere uiteinde te verschuiven.

Gevraagd wordt:

Voorbeeld

>>> rotatie('Jessica', 1)
'essicaJ'
>>> rotatie('emily', -2)
'lyemi'
>>> rotatie('LOUISE', 9)
'ISELOU'

>>> rotaties('Jessica')
{'CAJESSI', 'SICAJES', 'JESSICA', 'AJESSIC', 'SSICAJE', 'ESSICAJ', 'ICAJESS'}
>>> rotaties('emily')
{'YEMIL', 'ILYEM', 'EMILY', 'LYEMI', 'MILYE'}
>>> rotaties('LOUISE')
{'SELOUI', 'UISELO', 'ELOUIS', 'OUISEL', 'LOUISE', 'ISELOU'}

>>> normaalvorm('Jessica')
'AJESSIC'
>>> normaalvorm('emily')
'EMILY'
>>> normaalvorm('LOUISE')
'ELOUIS'

>>> halskettingen(2, 12)
352
>>> halskettingen(3, 7)
315
>>> halskettingen(9, 5)
11817
>>> halskettingen(21, 4)
48741
>>> halskettingen(26, 3)
5876