#include #include #include #include #include #include #include #include #include #include #include #define FORE(it, c) for(__typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it) #define FC(aa, bb) FORE(bb, aa) #define debug(x) cerr << #x << " = " << x << endl; #define debugv(x) cerr << #x << " = " ; FORE(it, (x)) cerr << *it << ", "; cerr << endl; #define fup(i, a, b) for(int i = (a); i <= (b); ++i) #define fdo(i, a, b) for(int i = (a); i >= (b); --i) #define FOR fup #define FORD fdo #define REP(i, n) for(int i = 0; i < (n); ++i) #define ALL(x) (x).begin(), (x).end() #define CLR(x) memset((x), 0, sizeof(x)) #define MP make_pair #define PB push_back #define siz(a) ((int)(a).size()) #define SZ siz #define inf 1000000000 #define FI first #define SE second using namespace std; typedef long long lli; typedef double ld; typedef lli LL; typedef ld LD; typedef vector VI; typedef pair PII; const int MAXN = 100100; char key[MAXN]; char text[MAXN]; bool solve() { scanf("%s", key); if (key[0] == '0') return false; scanf("%s", text); int m = strlen(key); int n = strlen(text); REP(i, m) key[i] -= 'A'; REP(i, n) { text[i] -= 'A'; } REP(i, n) { text[i] = (text[i] + key[i%m]+1) % 26 + 'A'; } printf("%s\n", text); return true; } int main() { while(solve()) ; return 0; }