PROG0330 - Caesar cipher

no tags 

The Caesar cipher is a classic method in cryptography to encode (encryption) and decode (decryption) text messages. The method is named after Julius Caesar, who used it in his private correspondence with his generals.

Encryption is executed by replacing each letter in the plain text by a letter some fixed number of positions down the alphabet. In doing this, the alphabet is considered to be circular, meaning that the letter Z is again followed by the letter A. Hence, also terms rotation or shift are used for this operation. For example, in rot3 (a rotation over three positions) the letter B is replaced during encryption by the letter E.

rot3 versleuteling
In encrypting a text message according to the Caesar rotation, each letter of the message is replaced by a letter some fixed number of positions down in the (circular) alphabet. In this example we use a rotation over three positions, such that the letter B in the plaintext is replaced by the letter E in the encrypted text.

Deciphering a text message is done using the reverse operation. In this case a rotation or shift is performed to the left, instead of to the right as during encryption. For example, in rot3 the letter E is replaced during deciphering by the letter B.

rot3 ontsleuteling
In deciphering a text message according to the Caesar rotation, each letter of the message is replaced by a letter some fixed number of positions upstream in the (circular) alphabet. In this example we use a rotation over three positions, so that the letter E in the encrypted text is replaced by the letter B in the plain text.

Input

The first line of the input contains a number $n \in \mathbb{N}$ that indicates the number of positions a text is rotated during execution of the Caesar cipher. This is followed by a line containing a sentence that was encrypted using a Caesar rotation over $n$ positions. During this encryption, only letters of the alphabet were rotated (both upper case and lower case letters). All other characters (digits, punctuation marks, spaces, …) have been kept unchanged in the encrypted text.

Output

The sentence in plain text.

Example

Input:

20
Ylluly boguhog ymn.

Output:

Errare humanum est.

Het Caesarcijfer is een klassieke manier om tekstberichten te coderen (versleutelen) en te decoderen (ontsleutelen). Het is vernoemd naar Julius Caesar, die het gebruikte om te communiceren met zijn veldheren.

De versleuteling werkt door elke letter van het alfabet te vervangen door een letter die enkele plaatsen verder in het alfabet voorkomt. Hierbij wordt een circulair alfabet beschouwd, wat betekent dat na de letter Z opnieuw de letter A volgt. Vandaar dat ook de term rotatie of verschuiving gebruikt wordt voor deze operatie. Bijvoorbeeld, bij rot3 (een rotatie over drie posities) wordt de letter B tijdens het versleutelen vervangen door de letter E.

rot3 versleuteling
Bij het versleutelen van een tekst via de Caesarrotatie wordt elke letter vervangen door een letter die een vast aantal plaatsen verder voorkomt in het alfabet. In dit voorbeeld gebruiken we een verschuiving over drie posities, zodat de letter B in de originele tekst wordt vervangen door de letter E in de gecodeerde tekst.

Het onsleutelen van een tekst gebeurt door de omgekeerde bewerking uit te voeren. In dit geval wordt er dus een rotatie of verschuiving naar links uitgevoerd, in plaats van naar rechts zoals bij de versleuteling. Bijvoorbeeld, bij rot3 wordt de letter E tijdens het ontsleutelen vervangen door de letter B.

rot3 ontsleuteling
Bij het ontsleutelen van een tekst via de Caesarrotatie wordt elke letter vervangen door een letter die een vast aantal plaatsen terug voorkomt in het alfabet. In dit voorbeeld gebruiken we een verschuiving over drie posities, zodat de letter E in de gecodeerde tekst wordt vervangen door de letter B in de gedecodeerde tekst.

Invoer

De eerste regel van de invoer bevat een getal $n \in \mathbb{N}$ dat aangeeft over hoeveel posities er geroteerd wordt bij een Caesarrotatie. Daarna volgt een regel die een zin bevat die gecodeerd werd aan de hand van een Caesarrotatie over $n$ posities. Hierbij werden enkel de letters van het alfabet geroteerd (zowel hoofdletters als kleine letters). Alle overige karakters (cijfers, leestekens, spaties, …) bleven ongewijzigd in de gecodeerde tekst.

Uitvoer

De gedecodeerde zin.

Voorbeeld

Invoer:

20
Ylluly boguhog ymn.

Uitvoer:

Errare humanum est.


Added by:Peter Dawyndt
Date:2013-02-16
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None