n = int(input())
s = input().strip()
result = []
for char in s:
    shifted = ord(char)+n
    shifted = (shifted - ord('a')) % 26 +ord('a')
    result.append(chr(shifted))
print(''.join(result))

# 读取偏移量n(整数),表示每个字符需要向后移动的位数

n = int(input())

# 读取需要加密的字符串,并去除首尾可能存在的空白字符

s = input().strip()

# 用于存储加密后的字符列表

result = []

# 遍历字符串中的每个字符

for char in s:

# 计算字符向后偏移n位后的ASCII码值

# ord(char)获取字符的ASCII码,加上偏移量n

shifted = ord(char) + n

# 处理字母循环:确保偏移后仍在'a'-'z'范围内

# 1. 先将ASCII码转换为0-25的范围(a=0, b=1, ..., z=25)

# 2. 对26取模,处理超过'z'的情况(如z偏移1位后变为a)

# 3. 再转换回ASCII码范围

shifted = (shifted - ord('a')) % 26 + ord('a')

# 将偏移后的ASCII码转换为字符,添加到结果列表

result.append(chr(shifted))

# 将结果列表中的所有字符拼接成字符串并输出

print(''.join(result))