# Arup Guha
# 12/14/2024
# Solution to Kattis Problem: Reverse Rot
# https://open.kattis.com/problems/reverserot

def getLet(num):

    if num < 26:
        return chr(ord('A')+num)
    elif num == 26:
        return '_'
    return '.'

def getNum(let):
    if let >= 'A' and let <= 'Z':
        return ord(let) - ord('A')
    if let == '_':
        return 26
    return 27

# Will break out later.
while True:
    
    toks = input().split()
    shift = int(toks[0])

    # Get out.
    if len(toks) == 1:
        break

    msgNums = []

    # Go backwards through the message, add numeric values to list.
    for i in range(len(toks[1])-1, -1, -1):
        msgNums.append(getNum(toks[1][i]))

    # Do shift.
    for i in range(len(msgNums)):
        msgNums[i] = (msgNums[i] + shift)%28

    # Print it.
    for x in msgNums:
        print(getLet(x), end="")
    print()

                
