# coding: utf-8
minuscules = 'abcdefghijklmnopqrstuvwxyz'
majuscules = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def rotation(chaine, x):
    """
     Effectue une rotation de x caractères vers la droite:
     >>> rotation('abcde', 2)
     'cdeab'
    """
    return chaine[x:] + chaine[:x]

def index(c, chaine):
    """
     Trouve l'index de c dans la chaine:
     >>> index('n', 'bonjour')
     2
    """
    for i in range(len(chaine)):
        if (c == chaine[i]):
            return i
    return -1

def chiffre_minuscules(chaine, x):
    """
     Chiffre une chaîne composée de minuscules
     >>> chiffre_minuscules('bonjour', 3)
     'erqmrxu'
    """
    r = rotation(minuscules, x)
    resultat = ''
    for lettre in chaine:
        resultat = resultat + r[index(lettre, minuscules)]
    return resultat

def chiffre(chaine, x):
    """
     Chiffre une chaîne quelconque
     >>> chiffre('Bonjour les amis!', 3)
     'Erqmrxu ohv dplv!'
    """
    r_min = rotation(minuscules, x)
    r_maj = rotation(majuscules, x)
    resultat = ''
    for lettre in chaine:
        if lettre in minuscules:
            resultat = resultat + r_min[index(lettre, minuscules)]
        elif lettre in majuscules:
            resultat = resultat + r_maj[index(lettre, majuscules)]
        else:
            resultat = resultat + lettre
    return resultat

#############################################################################
# Programme principal
#############################################################################
print(chiffre_minuscules('bonjour', 3))
print(chiffre('Bonjour les amis!', 3))
print(chiffre('Erqmrxu ohv dplv!', 23))
print(chiffre('Eudyr, yrxv dyhc ilql fhw hahuflfh!', 23))