#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<math.h>
int yue(int n,int m)
{
int max = 1;
for (int i = 1; i <= n; i++)
{
if (n% i == 0 && m%i == 0)max = i;
}
return max;
}
int bei(int n, int m)
{
int min = 10000;
for (int i = 1000; i >=n; i--)
{
if ( i%n == 0 && i%m == 0)min = i;
}
return min;
}
int f(int n)
{
int count = 0;
for (int i = 1; i <= n; i++)
{
if (yue(i, n) == 1)count++;
}
return count;
}
int amicable_number(int a, int b)
{
int sum1 = 0;
int sum2 = 0;
if (a == b)return 0;
for (int i = 1; i < a; i++)
{
if (a % i == 0)sum1 += i;
}
for (int i = 1; i < b; i++)
{
if (b % i == 0)sum2 += i;
}
if (sum1 ==b &&sum2==a)return 1;
else return 0;
}
void CharPyramid(int n, char ch)
{
for (int i = 0; i < n; i++)
{
for (int j = n-1; j > i; j--)
{
printf(" ");
}
for (int k = 0; k <= i; k++)
{
printf("%c ", ch);
}
printf("\n");
}
}
int factorsum(int num)
{
int sum = 0;
for (int i = 1; i < num; i++)
{
if (num % i == 0)sum += i;
}
return sum;
}
void print_pn(m, n)
{
int count = 0;
for (int i = m; i <= n; i++)
{
if (factorsum(i) == i)
{
count++;
printf("%d = 1",i);
for (int j = 2; j < i; j++)
{
if (i % j == 0)printf(" + %d",j);
}
printf("\n");
}
}
if (count==0)printf("No perfect number");
}
//int main() {
// /* int m, n;
// scanf("%d%d", &m, &n);
// print_pn(m, n);*/
//
// //double eps;
// //scanf("%le", &eps);
// //double p = 1;
// //double item = 1;
// //int i = 1;
// //do
// //{
// // item *= i;
// // item /= (2.0 * i + 1);
// // p += item;
// // i++;
// //} while (item >= eps);
// //printf("PI = %.5lf", 2 * p);
//
// //int a, b;
// //char c;
// //scanf("%d", &a);
// //do
// //{
// // scanf("%c", &c);
// // switch (c)
// // {
// // case'+':
// // scanf("%d", &b);
// // a = a + b;
// // break;
// // case'-':
// // scanf("%d", &b);
// // a = a - b;
// // break;
// // case'*':
// // scanf("%d", &b);
// // a = a * b;
// // break;
// // case'/':
// // scanf("%d", &b);
// // if (b == 0)printf("ERROR");
// // a = a / b;
// // break;
// // case'=':
// // printf("%d", a);
// // break;
// // default:
// // printf("ERROR");
// // break;
// // }
//
// //} while (c != '=');
// //
//
//
// int len = 0;
// int flag = 1;
// while(1)
// {
// char ch = getchar();
// if (ch == '\n')
// {
// if(len)printf("%d ", len);
// if(flag)printf("%d", len);
// break;
// }
// else if (ch == ' ')
// {
// if (len)
// {
// printf("%d ", len);
// len = flag = 0;
// }
//
// }
// else len++;
// }
//
// return 0;
//}
//int main()
//{
// int n;
// int arr[100];
// int index;
// scanf("%d", &n);
// for (int i = 0; i < n; i++)
// {
// scanf("%d", &arr[i]);
// }
// int item;
// int k = 0;
// scanf("%d", &item);
//
// while (arr[k++] < item);
// for (int j = n; j > k - 1; j--)
// {
// int one = arr[j - 1];
// arr[j - 1] = arr[j];
// arr[j] = one;
// }
// arr[k - 1] = item;
//
// for (int i = 0; i <= n; i++)
// {
// printf("%d ", arr[i]);
// }
//
// return 0;
//}
//int main()
//{
// int n;
// int arr[1000];
// int count = 0;
// scanf("%d", &n);
// for (int i = 0; i < n; i++)
// {
// scanf("%d", arr[i]);
// }
// for (int i = 0; i < n; i++)
// {
// for (int k = 0; k <= i; i++)
// {
// if (arr[k] == arr[i])count++;
// }
// }
// return 0;
//}
void init(int arr[], int n)
{
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
}
int dele(int arr[],int arr_n[], int n)
{
int count = 0;
for (int i = 0; i < n; i++)
{
int flag = 1;
for (int j = 0; j < i; j++)
{
if (arr[i] == arr[j])flag = 0;
}
if (flag)
{
arr_n[count] = arr[i];
count++;
}
}
return count;
}
//int main()
//{
// int arr[100], arr2[100];
// int arr3[100], arr4[100];
//
// int m, n;
// scanf("%d",&m);
// init(arr, m);
// scanf("%d", &n);
// init(arr2, n);
// int m1 = dele(arr, arr3, m);
// int n1 = dele(arr2, arr4, n);
// for (int i = 0; i < m1; i++)
// {
// int flag = 0;
// for (int j = 0; j < n1; j++)
// {
// if (arr3[i] == arr4[j])flag = 1;
// }
// if (flag==0)printf("%d ", arr3[i]);
// }
// for (int i = 0; i < n1; i++)
// {
// int flag = 0;
// for (int j = 0; j < m1; j++)
// {
// if (arr4[i] == arr3[j])flag = 1;
// }
// if (flag==0)printf("%d ", arr4[i]);
// }
//
//
// return 0;
//}
//int main()
//{
// int arr[10][10];
// int m, n;
// scanf("%d%d", &m, &n);
// for (int i = 0; i < n; i++)
// {
// for (int j = 0; j < n; j++)
// {
// scanf("%d", &arr[i][j]);
// }
// }
//
// m = m % 3;
// for (int i = 0; i < n; i++)
// {
// int k = m;
// while (k)
// {
// int item = arr[i][n - 1];
// for (int j = n; j > 0;j--)
// {
// arr[i][j] = arr[i][j - 1];
// }
// arr[i][0] = item;
// k--;
// }
// }
//
// //打印
// for (int i = 0; i < n; i++)
// {
// for (int j = 0; j < n; j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
// }
// return 0;
//}
//int main()
//{
// int n;
// int arr[10][10];
// int count = 1;
// scanf("%d", &n);
// int len_s =1,wid_s = 1;
// int len_end =n, wid_end = n;
//
// while (count <= n * n)
// {
// for (int i = len_s; i <= len_end; i++)
// {
// arr[wid_s][i] = count;
// count++;
// }
// wid_s++;
// for (int i = wid_s; i <= wid_end; i++)
// {
// arr[i][len_end] = count;
// count++;
// }
// len_end--;
// for (int i = len_end; i >= len_s; i--)
// {
// arr[wid_end][i] = count;
// count++;
// }
// wid_end--;
// for (int i = wid_end; i >= wid_s; i--)
// {
// arr[i][len_s] = count;
// count++;
// }
// len_s++;
//
// }
// for (int i = 1; i <= n; i++)
// {
// for (int j = 1; j <= n; j++)
// {
// printf("%3d ", arr[i][j]);
// }
// if(i!=n)printf("\n");
// }
//
//
//
// return 0;
//}
int win(char arr[30][30], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (arr[i][j] != '*')return 0;
}
}
return 1;
}
void print(char arr[30][30], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%c ", arr[i][j]);
}
printf("\n");
}
}
//int main()
//{
// int n;
// char arr[30][30];
// scanf("%d", &n);
// getchar();
// n = 2 * n;
// for (int i = 0; i < n; i++)
// {
// for (int j = 0; j < n; j++)
// {
// scanf("%c", &arr[i][j]);
// if (arr[i][j] == ' ')j--;
// }
// getchar();
// }
// int k = 0;
// scanf("%d", &k);
// int err = 0;
//
// for (int i = 0; i < k; i++)
// {
// int x1, y1, x2, y2;
// scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
// x1--;
// y1--;
// x2--;
// y2--;
// if ((arr[x1][y1] == arr[x2][y2]) && arr[x1][y1] != '*')
// {
// arr[x1][y1] = '*';
// arr[x2][y2] = '*';
// print(arr, n);
// }
//
// else
// {
// err++;
// printf("Uh-oh\n");
// if (err == 3)
// {
// printf("Game Over");
// break;
// }
// }
// if (win(arr, n))
// {
// printf("Congratulations!");
// break;
// }
// }
// /* printf("%c%c", arr[0][1], arr[1][3]);*/
// return 0;
//}
int main()
{
char arr[100];
gets(arr);
int len = strlen(arr);
int n;
scanf("%d", &n);
if (n >= 0)
{
n = n % 26;
for (int i = 0; i < len; i++)
{
if (arr[i] >= 'a' && arr[i] <= 'z')
{
if (arr[i] + n > 'z')arr[i] = arr[i] + n - 26;
else arr[i] = arr[i] + n;
}
else if (arr[i] >= 'A' && arr[i] <= 'Z')
{
if (arr[i] + n > 'Z')arr[i] = arr[i] + n - 26;
else arr[i] = arr[i] + n;
}
}
}
else if (n < 0)
{
n = -n;
n = n % 26;
for (int i = 0; i < len; i++)
{
if (arr[i] >= 'a' && arr[i] <= 'z')
{
if (arr[i] - n < 'a')arr[i] = arr[i] - n + 26;
else arr[i] = arr[i] - n;
}
else if (arr[i] >= 'A' && arr[i] <= 'Z')
{
if (arr[i] - n < 'A')arr[i] = arr[i] - n + 26;
else arr[i] = arr[i] - n;
}
}
}
for (int i = 0; i < len; i++)
{
printf("%c", arr[i]);
}
return 0;
}