#include <iostream>
#include <string>
#include<cstdio>
using std::cin;
using std::string;
using std::cout;
using std::endl;
int main()
{
int k,n;
string text;
cin>>n;
cin>>text;
cin>>k;
k=k%26; //taking MOD 26 because it is the size of English alphabet.
char ans;
int extra,letter;
for (int i = 0; i <n; i++)
{ //cout<<text[i]<<" : ";
// if(text[i] != '\0') //check if the character is null
{
if(isalpha(text[i])) //check if the character is alphabet
{
int d=(int)text[i] ; //obtain the ascii value
int t=d+k; //obtain the encrypted value
//if(t>122)
{ //cout<<t<<","<<d<<" ... ";
if(d>96) //if the encrypted value of character is greater than 'a', small caps
{
if(t>122) { //if value is greater than 'z' ASCII is 122
extra=t-122;
letter=97 +(extra-1); //97 is ASCII of 'a'
}//string ans= string()+char(letter);
else
letter=char(t);
}
else // Upper caps
{ if(t>90) { //90 is ASCII of 'Z'
extra=t-90;
letter=65 +(extra-1); //65 is ASCII of 'A'
}
else
letter=char(t);
}
ans=letter;
//cout<<char(letter);//cout<<ans;
}
//else
//string ans= string()+char(t); //print the encrypted character
cout<<char(ans); //cout<<ans;
}
else //if the character is not string, then print it just like that
{
cout<<text[i];
} //cout<<endl;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZTxjc3RkaW8+CnVzaW5nIHN0ZDo6Y2luOwp1c2luZyBzdGQ6OnN0cmluZzsKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OmVuZGw7CgppbnQgbWFpbigpCnsKICAgIGludCBrLG47CiAgICBzdHJpbmcgdGV4dDsKICAgIGNpbj4+bjsKICAgIGNpbj4+dGV4dDsKICAgIGNpbj4+azsKICAgIGs9ayUyNjsgLy90YWtpbmcgTU9EIDI2IGJlY2F1c2UgaXQgaXMgdGhlIHNpemUgb2YgRW5nbGlzaCBhbHBoYWJldC4KICAgIGNoYXIgYW5zOwoJaW50IGV4dHJhLGxldHRlcjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDxuOyBpKyspCiAgICB7IC8vY291dDw8dGV4dFtpXTw8IiA6ICI7CiAgICAgICAvLyBpZih0ZXh0W2ldICE9ICdcMCcpIC8vY2hlY2sgaWYgdGhlIGNoYXJhY3RlciBpcyBudWxsCiAgICAgICAgewogICAgICAgICAgICBpZihpc2FscGhhKHRleHRbaV0pKSAvL2NoZWNrIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYWxwaGFiZXQKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IGQ9KGludCl0ZXh0W2ldIDsgLy9vYnRhaW4gdGhlIGFzY2lpIHZhbHVlCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGludCB0PWQrazsgICAgICAgICAgIC8vb2J0YWluIHRoZSBlbmNyeXB0ZWQgdmFsdWUKICAgICAgICAgICAgICAgIC8vaWYodD4xMjIpICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB7CS8vY291dDw8dDw8IiwiPDxkPDwiIC4uLiAiOwogICAgICAgICAgICAgICAgCWlmKGQ+OTYpICAgICAgICAvL2lmIHRoZSBlbmNyeXB0ZWQgdmFsdWUgb2YgY2hhcmFjdGVyIGlzIGdyZWF0ZXIgdGhhbiAnYScsIHNtYWxsIGNhcHMKICAgICAgICAgICAgICAgICAgICB7CQogICAgICAgICAgICAgICAgICAgIAlpZih0PjEyMikgeyAvL2lmIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAneicgQVNDSUkgaXMgMTIyCiAgICAgICAgICAgICAgICAgICAgCSBleHRyYT10LTEyMjsKICAgICAgICAgICAgICAgICAgICAJIGxldHRlcj05NyArKGV4dHJhLTEpOyAvLzk3IGlzIEFTQ0lJIG9mICdhJwogICAgICAgICAgICAgICAgICAgIAkgCiAgICAgICAgICAgICAgICAgICAgfS8vc3RyaW5nIGFucz0gc3RyaW5nKCkrY2hhcihsZXR0ZXIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgICAgICAgCWxldHRlcj1jaGFyKHQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIC8vIFVwcGVyIGNhcHMKICAgICAgICAgICAgICAgICAgICB7CWlmKHQ+OTApIHsJLy85MCBpcyBBU0NJSSBvZiAnWicKICAgICAgICAgICAgICAgICAgICAJIGV4dHJhPXQtOTA7CiAgICAgICAgICAgICAgICAgICAgCSBsZXR0ZXI9NjUgKyhleHRyYS0xKTsgLy82NSBpcyBBU0NJSSBvZiAnQScKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIAlsZXR0ZXI9Y2hhcih0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYW5zPWxldHRlcjsKICAgICAgICAgICAgICAgICAgICAvL2NvdXQ8PGNoYXIobGV0dGVyKTsvL2NvdXQ8PGFuczsKICAgICAgICAgICAgICAgIH0KCQkJCS8vZWxzZQogICAgICAgICAgICAgICAgLy9zdHJpbmcgYW5zPSBzdHJpbmcoKStjaGFyKHQpOyAvL3ByaW50IHRoZSBlbmNyeXB0ZWQgY2hhcmFjdGVyCiAgICAgICAgICAgICAgIGNvdXQ8PGNoYXIoYW5zKTsgLy9jb3V0PDxhbnM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAvL2lmIHRoZSBjaGFyYWN0ZXIgaXMgbm90IHN0cmluZywgdGhlbiBwcmludCBpdCBqdXN0IGxpa2UgdGhhdAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY291dDw8dGV4dFtpXTsKICAgICAgICAgICAgIH0gLy9jb3V0PDxlbmRsOwogICAgICAgIH0KICAgIH0KfQ==