#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <ctype.h>

using namespace std;

inline char rotate(char c, int x){
    int r = x % 26;
    if(isalpha(c)){
        c += r;
    }

    return c;
}

inline char decode_from_t(char t, char tgt){
    int df = ('t' - t) % 26;
    tgt += df;
    return tgt;
}

char buf[82];
enum state {
    init,
    wait_h,
    after_th,
    rest_chars,
    wait_sep,
    other_word,
};

inline bool is_sep(char *c){
    return *c == '.' || *c == ' ';
}

// return diff.
int findTheThatThis(){
    state s = init;
    char *c = buf;
    char next, dec, t;

    while(*c != '\n'){
        switch (s) {
            case init:
                if(isalpha(*c)){
                    s = wait_h;
                    t = *c;
                }
                break;
            case wait_h:
                if(is_sep(c)){
                    s = init;
                }else{
                    dec = decode_from_t(t, *c);
                    if(dec == 'h'){
                        s = after_th;
                    }else{
                        s = other_word;
                    }
                }
                break;
            case after_th:
                if(is_sep(c)){
                    s = init;
                }else {
                    dec = decode_from_t(t, *c);
                    switch (dec) {
                        case 'e':
                            s = wait_sep;
                            break;
                        case 'i':
                            next = 's';
                            s = rest_chars;
                            break;
                        case 'a':
                            next = 't';
                            s = rest_chars;
                            break;
                        default:
                            s = other_word;
                            break;
                    }
                }
                break;
            case rest_chars:
                if(is_sep(c)){
                    s = init;
                }else{
                    dec = decode_from_t(t, *c);
                    if(dec == next){
                        s = wait_sep;
                    }else{
                        s = other_word;
                    }
                }
                break;
            case wait_sep:
                if(is_sep(c)){
                    return 't' - t;
                }else{
                    s = other_word;
                }
                break;
            case other_word:
                if(is_sep(c)){
                    s = init;
                }
                break;
        } // end switch
        c++;
    } // end while
    // not found
    return -1;
}

int main(int argc, char const* argv[])
{
    int dif;

    while (nullptr != fgets(buf, 82, stdin)) {
        dif = findTheThatThis();
        for (int i = 0; ; i++) {
            if(buf[i] == '\n'){
                buf[i] = '\0';
                puts(buf);
                break;
            }
            buf[i] = rotate(buf[i], dif);
        }
    }

        return 0;
}