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.
//package x0007_aim_tech_round_3_div_2;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;

public class C_CyclicLettersShift {
	private final boolean isDebug;
	
	private String s;
	
	public C_CyclicLettersShift(boolean isDebug) {
		this.isDebug = isDebug;
	}
	
	public void readInput() {
		Scanner sc = null;
		if (isDebug) {
			try {
				sc = new Scanner(new FileInputStream("src\\x0007_aim_tech_round_3_div_2\\C_input1.txt"));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} else {
			sc =  new Scanner(System.in);
		}
		
		s = sc.next();
		
		if (isDebug) {
			System.out.format("s=%s %n", s);
		}
	}
	
	public void solve() {
		int l = 0, r = 1;
		int len = s.length();
		StringBuilder sb = new StringBuilder();
		if (len == 1) {
			sb.append(shift(s.charAt(0)));
		} else {
			int not_a_idx = 0;
			while (not_a_idx < len && s.charAt(not_a_idx) == 'a') {
				not_a_idx++;
			}
			
			if (not_a_idx == len) {
				sb.append(s.substring(0, len - 1)).append('z');
			} else {
				int a_idx = not_a_idx + 1;
				while (a_idx < len && s.charAt(a_idx) != 'a') {
					a_idx++;
				}
				sb.append(s.substring(0, not_a_idx));
				for (int i = not_a_idx; i < a_idx; ++i) {
					sb.append(shift(s.charAt(i)));
				}
				sb.append(s.substring(a_idx, len));
			}
		}
		
		System.out.println(sb);
	}
	
	private char shift(char c) {
		if (c == 'a')
			return 'z';
		
		return (char) (c - 1);
	}
	
	public static void main(String[] args) {
		C_CyclicLettersShift solver = new C_CyclicLettersShift(false);
		solver.readInput();
		solver.solve();
	}
}
