Copiii solarieni se joacă adesea trimiţându-şi mesaje codificate. Pentru codificare ei folosesc un cifru bazat pe o permutare a literelor alfabetului solarian şi un număr natural .
Alfabetul solarian conţine litere foarte complicate, aşa că noi le vom reprezenta prin numere de la la .
Dat fiind un mesaj în limbaj solarian, reprezentat de noi ca o succesiune de numere cuprinse între şi , , codificarea mesajului se realizează astfel: se înlocuieşte fiecare literă cu , apoi şirul obţinut se roteşte spre dreapta, făcând o permutare circulară cu poziţii rezultând şirul .
De exemplu, pentru mesajul , permutarea (adică , , ) şi . Aplicând permutarea vom obţine şirul , apoi rotind spre dreapta şirul cu două poziţii obţinem codificarea .
Cerinţă
Date fiind un mesaj necodificat şi codificarea sa, determinaţi cifrul folosit (permutarea şi numărul ).
Date de intrare
Fişierul de intrare cifru.in
conţine pe prima linie numele naturale şi , separate prin spaţiu, reprezentând lungimea mesajului şi respectiv numărul de litere din alfabetul solarian. Pe cea de a doua linie este scris mesajul necodificat ca o succesiune de numere cuprinse între şi separate prin câte un spaţiu. Pe cea de a treia linie este scris mesajul codificat ca o succesiune de n numere cuprinse între şi separate prin câte un spaţiu.
Date de ieşire
Fişierul de ieşire cifru.out
va conţine pe prima linie numărul natural , reprezentând numărul de poziţii cu care s-a realizat permutarea circulară spre dreapta. Dacă pentru există mai multe posibilităţi se va alege valoarea minimă. Pe următoarea linie este descrisă permutarea . Mai exact se vor scrie valorile , , , separate prin câte un spaţiu.
Restricții și precizări
- Mesajul conţine fiecare număr natural din intervalul cel puţin o dată.
- Pentru teste cu se acordă de puncte din care pentru teste şi cu .
Exemplu
cifru.in
6 3
2 1 3 3 2 1
1 3 1 3 2 2
cifru.out
2
3 1 2