#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
 
using namespace std;
 
#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
 
#define MOD 1000000009
 
int main(){
  string s;
  cin >> s;
  //string abc = "abcdefghijklmnopqrstuvwxyz";
  string pass1 = "nmaeuivwxyzcdopqbfghrstjkl";
  string pass2 = "cqlmdrstfxyzbanopuvweghijk";
  string ans;
  rep(i,0,s.sz){
    ans += pass2[s[i]-'a'];
  }
  cout << ans << endl;
  return 0;
}
/*
シーザー暗号です。対応表をサンプルから推測します。
orangeとcipherでeとrを重複させてわかりやすくしてみました。
暗号は超難易度のものも作れてしまいそうですが、
プロコンの本題とは外れてしまうと思ったので簡単にしました。
(ちなみに対応表はサンプルからすべて推測できるようになっています。)
*/