#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
#define F first
#define S second
#define loop(a,n) for(int i=a; i<=n ; i++)
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define NAME "CH"
using namespace std;
string s,n,res;
int k;
void nhap(){
cin >> n;
cin.ignore();
getline(cin, s);
}
int op(string num, int x){
int res = 0;
for(int i=0;i<num.size();++i) {
res = (res * 10 + num[i] - '0') % x;
}
return res;
}
string to_upper(string s){
for(int i = 0; i < s.size(); i++){
if(s[i] >= 'a' && s[i] <= 'z'){
s[i] -= 32;
}
}
return s;
}
string decode(string s, int k){
string res;
for(int i = 0; i < s.size(); ++i) {
if(s[i] == ' ') {
res += ' ';
} else {
char x = s[i] - k;
if (x < 'A') x += 26;
res += x;
}
}
return res;
}
void solve(){
k = op(n, 26);
s = to_upper(s);
res = decode(s,k);
}
void xuat(){
cout<<res;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
freopen(NAME".INP","r",stdin);
freopen(NAME".OUT","w",stdout);
nhap();
solve();
xuat();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBsb29wKGEsbikgZm9yKGludCBpPWE7IGk8PW4gOyBpKyspCiNkZWZpbmUgVElNRSAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKQojZGVmaW5lIE5BTUUgIkNIIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgcyxuLHJlczsKaW50IGs7CnZvaWQgbmhhcCgpewogICAgY2luID4+IG47CiAgICBjaW4uaWdub3JlKCk7CiAgICBnZXRsaW5lKGNpbiwgcyk7Cn0KaW50IG9wKHN0cmluZyBudW0sIGludCB4KXsKICAgIGludCByZXMgPSAwOwogICAgZm9yKGludCBpPTA7aTxudW0uc2l6ZSgpOysraSkgewogICAgICAgIHJlcyA9IChyZXMgKiAxMCArIG51bVtpXSAtICcwJykgJSB4OwogICAgfQogICAgcmV0dXJuIHJlczsgCn0Kc3RyaW5nIHRvX3VwcGVyKHN0cmluZyBzKXsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgaSsrKXsKICAgICAgICBpZihzW2ldID49ICdhJyAmJiBzW2ldIDw9ICd6Jyl7CiAgICAgICAgICAgIHNbaV0gLT0gMzI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7Cn0Kc3RyaW5nIGRlY29kZShzdHJpbmcgcywgaW50IGspewogICAgc3RyaW5nIHJlczsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKSB7CiAgICAgICAgaWYoc1tpXSA9PSAnICcpIHsKICAgICAgICAgICAgcmVzICs9ICcgJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjaGFyIHggPSBzW2ldIC0gazsKICAgICAgICAgICAgaWYgKHggPCAnQScpIHggKz0gMjY7CiAgICAgICAgICAgIHJlcyArPSB4OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7Cn0KCnZvaWQgc29sdmUoKXsKICAgIGsgPSBvcChuLCAyNik7CiAgICBzID0gdG9fdXBwZXIocyk7CiAgICByZXMgPSBkZWNvZGUocyxrKTsKfQp2b2lkIHh1YXQoKXsKICAgIGNvdXQ8PHJlczsKfQppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBmcmVvcGVuKE5BTUUiLklOUCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oTkFNRSIuT1VUIiwidyIsc3Rkb3V0KTsKICAgIG5oYXAoKTsKICAgIHNvbHZlKCk7CiAgICB4dWF0KCk7CiAgICByZXR1cm4gMDsKfQ==