You are given a non-empty string s consisting of lowercase English letters. You have to pick exactly one non-empty substring of s and shift all its letters 'z' <image> 'y' <image> 'x' <image> 'b' <image> 'a' <image> 'z'. In other words, each character is replaced with the previous character of English alphabet and 'a' is replaced with 'z'.

What is the lexicographically minimum string that can be obtained from s by performing this shift exactly once?

Input

The only line of the input contains the string s (1 ≤ |s| ≤ 100 000) consisting of lowercase English letters.

Output

Print the lexicographically minimum string that can be obtained from s by shifting letters of exactly one non-empty substring.

Examples

Input

codeforces


Output

bncdenqbdr


Input

abacaba


Output

aaacaba

Note

String s is lexicographically smaller than some other string t of the same length if there exists some 1 ≤ i ≤ |s|, such that s1 = t1, s2 = t2, ..., si - 1 = ti - 1, and si < ti.

    import java.io.*;

    import java.math.BigInteger;
    import java.util.*;
    public class q1 {
    	//static int flag=1;
    	private static InputStream stream;
    	private static byte[] buf=new byte[1024];
    	private static int curChar;
    	private static int numChars;
    	private static SpaceCharFilter filter;
    	private static PrintWriter pw;
    	private static long count=0;
        public static void main(String args[] ) throws Exception 
        {
        	InputReader(System.in);
    		pw=new PrintWriter(System.out);
    		soln();
    		pw.close();
        }


        
  private static void soln() {

	  String s=nextLine();
	  int count=0;
	  int ind=s.indexOf('a');
	  HashMap<Character,Character>hm =new HashMap<>();
	  int t=97,q=98;
	 for(int i=0;i<26;i++){
		 char c=(char)t;
		 char p=(char)q;

		 //System.out.println(c+" "+p);
		 hm.put(p, c);
		 t++;
		 q++;
	 }
	 hm.put('a','z');
	  if(ind<0){
	  for(int i=0;i<s.length();i++){
		  if(s.charAt(i)=='a')
			  {
			  for(int j=i;j<s.length();j++)
				  System.out.print(s.charAt(j));
			
			System.exit(0);
			  }
			  else{
				  System.out.print(Character.valueOf(hm.get(s.charAt(i))));
				  if(i==s.length()-1)
					  System.exit(0);
			  }
	  }
	  }
	  else{
		  for(int i=0;i<s.length();i++){
			  if(s.charAt(i)=='a' ){
				//  System.out.println(1);
				  if(i==0){
					  if(i==s.length()-1){
							System.out.print('z');
							System.exit(0);
						}
					  System.out.print(Character.valueOf(s.charAt(i)));
					
					  
				  }
				  else if(i!=0 && count>0)
				  {
					  
					  for(int j=i;j<s.length();j++)
						  System.out.print(Character.valueOf(s.charAt(j)));
					 System.exit(0);
				  }
				  else{
					  if(i==s.length()-1){
							System.out.print('z');
							System.exit(0);
						}
					  System.out.print(Character.valueOf(s.charAt(i)));
				  }
			  }
				   else{
					   count++;
				  System.out.print(Character.valueOf(hm.get(s.charAt(i))));
				  if(i==s.length()-1)
					  System.exit(0);
			  }  
		  }
	  }
	  
	for(int i=0;i<s.length();i++){
		if(i==(s.length()-1)){
			System.out.print(Character.valueOf(hm.get(s.charAt(i))));
		}	else
				System.out.print(Character.valueOf(s.charAt(i)));
		
			
	}
 	
 	
  }

public static boolean PointInTriangle(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8)
{
int s = p2 * p5 - p1 * p6 + (p6 - p2) * p7 + (p1 - p5) * p8;
int t = p1 * p4 - p2 * p3 + (p2 - p4) * p7 + (p3 - p1) * p8;

if ((s < 0) != (t < 0))
return false;

int A = -p4 * p5 + p2 * (p5 - p3) + p1 * (p4 - p6) + p3 * p6;
if (A < 0.0)
{
s = -s;
t = -t;
A = -A;
}
return s > 0 && t > 0 && (s + t) <= A;
}

  public static float area(int x1, int y1, int x2, int y2, int x3, int y3){
	  return (float)Math.abs((x1*(y2-y3) + x2*(y3-y1)+ x3*(y1-y2))/2.0);
  }
  public static boolean isPrime(int n)
  {
      // Corner cases
      if (n <= 1)  return false;
      if (n <= 3)  return true;
   
      // This is checked so that we can skip 
      // middle five numbers in below loop
      if (n%2 == 0 || n%3 == 0) return false;
   
      for (int i=5; i*i<=n; i=i+6)
          if (n%i == 0 || n%(i+2) == 0)
             return false;
   
      return true;
  }


//merge Sort
        
        public static void Merge_sort(int a[]){
        	int len=a.length;
        	if(len <2)
        		return ;
        	int mid=len/2;
        	int l[]=new int[mid];
        	int r[] =new int[len-mid];
        	for(int i=0;i<mid;i++)
        		l[i]=a[i];
        	for(int i=mid;i<len;i++)
        		r[i-mid]=a[i];
        	
        	Merge_sort(l);
        	Merge_sort(r);
        	Merge(l,r,a);
        }
        	
        public static void Merge(int []l,int[]r,int a[]){
        	int nl=l.length;
        	int nr=r.length;
        	int i=0,j=0,k=0;
        	
        	while(i <nl && j<nr){
        		if(l[i] > r[j]){
        			a[k]=l[i];
        			k++;
        			i++;
        		}
        		else{
        			a[k]=r[j];
        			k++;
        			j++;
        		}
        		
        		while(i<nl){
        			a[k]=l[i];
        			k++;
        			i++;
        		}
        		while(j<nr){
        			a[k]=r[j];
        			k++;
        			j++;
        		}
        	}
        }
  
    	
    

    // To Get Input
     	// Some Buffer Methods
     
     	public static void InputReader(InputStream stream1) {
     		stream = stream1;
     	}
     
     	private static boolean isWhitespace(int c) {
     		return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
     	}
     
     	private static boolean isEndOfLine(int c) {
     		return c == '\n' || c == '\r' || c == -1;
     	}
     
     	private static int read() {
     		if (numChars == -1)
     			throw new InputMismatchException();
     		if (curChar >= numChars) {
     			curChar = 0;
     			try {
     				numChars = stream.read(buf);
     			} catch (IOException e) {
     				throw new InputMismatchException();
     			}
     			if (numChars <= 0)
     				return -1;
     		}
     		return buf[curChar++];
     	}
     
     	private static int nextInt() {
     		int c = read();
     		while (isSpaceChar(c))
     			c = read();
     		int sgn = 1;
     		if (c == '-') {
     			sgn = -1;
     			c = read();
     		}
     		int res = 0;
     		do {
     			if (c < '0' || c > '9')
     				throw new InputMismatchException();
     			res *= 10;
     			res += c - '0';
     			c = read();
     		} while (!isSpaceChar(c));
     		return res * sgn;
     	}
      
     	private static long nextLong() {
     		int c = read();
     		while (isSpaceChar(c))
     			c = read();
     		int sgn = 1;
     		if (c == '-') {
     			sgn = -1;
     			c = read();
     		}
     		long res = 0;
     		do {
     			if (c < '0' || c > '9')
     				throw new InputMismatchException();
     			res *= 10;
     			res += c - '0';
     			c = read();
     		} while (!isSpaceChar(c));
     		return res * sgn;
     	}
      
     	private static String nextToken() {
     		int c = read();
     		while (isSpaceChar(c))
     			c = read();
     		StringBuilder res = new StringBuilder();
     		do {
     			res.appendCodePoint(c);
     			c = read();
     		} while (!isSpaceChar(c));
     		return res.toString();
     	}
      
     	private static String nextLine() {
     		int c = read();
     		while (isSpaceChar(c))
     			c = read();
     		StringBuilder res = new StringBuilder();
     		do {
     			res.appendCodePoint(c);
     			c = read();
     		} while (!isEndOfLine(c));
     		return res.toString();
     	}
     
     	private static int[] nextIntArray(int n) {
     		int[] arr = new int[n];
     		for (int i = 0; i < n; i++) {
     			arr[i] = nextInt();
     		}
     		return arr;
     	}
     	  
     	private static long[] nextLongArray(int n) {
     		long[] arr = new long[n];
     		for (int i = 0; i < n; i++) {
     			arr[i] = nextLong();
     		}
     		return arr;
     	}
     
     	private static void pArray(int[] arr){
     		for (int i=0; i<arr.length; i++) {
     			System.out.print(arr[i] + " ");
     		}
     		System.out.println();
     		return;
     	}
     
     	private static void pArray(long[] arr){
     		for (int i=0; i<arr.length; i++) {
     			System.out.print(arr[i] + " ");
     		}
     		System.out.println();
     		return;		
     	}
     
     	private static boolean isSpaceChar(int c) {
     		if (filter != null)
     			return filter.isSpaceChar(c);
     		return isWhitespace(c);
     	}
      
     	private interface SpaceCharFilter {
     		public boolean isSpaceChar(int ch);
     	}
     
     
     
     

  }