#include<iostream>
#include<cstring>
using namespace std;
bool glavnoLiE(char bukva){
    if(bukva > 'Z'){
        return false;
    }else{
        return true;
    }
}
bool bukvaLiE(char znac){
    if((znac >= 'A' && znac <= 'Z') || (znac >= 'a' && znac <= 'z')){
        return true;
    }else{
        return false;
    }
}
int main(){
    char vhod[1005], buff[1000];
    for(int i = 0; i < 1005; i++){
        vhod[i] = 32;
    }
    int addingTo = 0, vhodLenght, n;
    bool done = false;
    for(int i = 0; buff[strlen(buff)] != '.'; i++){
        cin >> buff;
        for(int j = 0; j < strlen(buff); j++){
            vhod[addingTo] = buff[j];
            addingTo++;
        }
        addingTo++;
        for(int i = 0; i < 105; i++){
            if(vhod[i] == '.' || vhod[i] == '?' || vhod[i] == '!'){
                done = true;
                vhodLenght = i + 1;
            }
        }
        if(done){
            break;
        }
    }
    cin >> n;
    n = n % 26;
    for(int i = 0; i < vhodLenght; i++){
        if(bukvaLiE(vhod[i])){
            char izhod;
            izhod = vhod[i] - n;
            if(glavnoLiE(vhod[i])){
                if(izhod > 'Z'){
                    izhod = izhod - 'Z' + 'A' - 1;
                }
                if(izhod < 'A'){
                    izhod = 'Z' - 'A' + izhod + 1;
                }
            }else{
                if(izhod > 'z'){
                    izhod = izhod - 'z' + 'a' - 1;
                }
                if(izhod < 'a'){
                    izhod = 'z' - 'a' + izhod + 1;
                }
            }
            cout << izhod;
        }else{
            cout << vhod[i];
        }
    }
    return 0;
}
