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.util.*;
import java.awt.geom.*;
import java.io.*;
import java.math.*;

public class Main {

    public static void main(String[] args) throws Exception {
        long startTime = System.nanoTime();
        char [] data = in.next().toCharArray();
        Index temp = new Index(0, 0);
        int s = firstNonA(data);
        if (s == -1) {
            data[data.length-1]+=25;
            for (int i = 0; i <= data.length; i++) {
                out.print( (i < data.length ? data[i] : "\n") );
            }
            exit(0);
        }
        find(data, s, temp);
        for (int i = temp.start; i < temp.end; i++) {
            data[i]--;
        }
        for (int i = 0; i <= data.length; i++) {
            out.print( (i < data.length ? data[i] : "\n") );
        }
        long endTime = System.nanoTime();
        err.println("Execution Time : +" + (endTime - startTime) / 1000000 + " ms");
        exit(0);
    }

    static void find(char [] data, int s, Index a) {
        a.start = s;
        for (int i = s; i < data.length; i++) {
            if (data[i] == 'a') {
                a.end = i;
                return;
            }
        }
        a.end = data.length;
    }

    static int firstNonA(char [] data) {
        for (int i = 0; i < data.length; i++) {
            if (data[i] != 'a') return i;
        }
        return -1;
    }

    static int lastA(char [] data) {
        for (int i = data.length - 1; i >= 0; i -- ) {
            if (data[i] == 'a') return i;
        }
        return -1;
    }

    static class Index {
        int start = 0;
        int end = 0;
        public Index(int s, int e) {
            start = s;
            end = e;
        }
    }
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }
    }

    static void exit(int a) {
        out.close();
        err.close();
        System.exit(a);
    }

    static InputStream inputStream = System.in;
    static OutputStream outputStream = System.out;
    static OutputStream errStream = System.err;
    static InputReader in = new InputReader(inputStream);
    static PrintWriter out = new PrintWriter(outputStream);
    static PrintWriter err = new PrintWriter(errStream);
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

}
