#include <bits/stdc++.h>

using namespace std;

#define ff first
#define ss second
#define pb push_back
#define mp make_pair

int vis[200005][2];
long long v2[200005][2];
long long v3[200005][2];
int v[200005];
int n;

long long bfs(int x, int e){
	//printf("i %d %d\n",v[x],x);
	if(x <= 0 || x > n)
		return 0;
	if(x == 1){
		if(e == 1)
			return -2;
		else
			return -1;
	}
	if(vis[x][e]){
		if(v2[x][e] == 0) return -1;
		return v2[x][e];
	}

	vis[x][e] = 1;

	long long a;

	if(e)
		a = bfs(x - v[x], !e);
	else
		a = bfs(x + v[x], !e);

	//printf("r %d %d\n",x,a );
	if(a == -1)
		return v2[x][e] = -1;
	if(a == -2){
		v3[x][e] = 1;
		return v2[x][e] = v[x];
	}
	return v2[x][e] = a + v[x];

}

int main(){
	scanf("%d",&n);
	for(int i = 0; i < n-1; i++)
		scanf("%d",v+i+2);

	for(int i = 2; i <= n; i++){
		if(!vis[i][0]){
			bfs(i,0);
			//printf("a %d %lld\n",i,v2[i][0]);
		}
		if(!vis[i][1]){
			bfs(i,1);
			//printf("c %d %lld\n",i,v2[i][1]);
		}
	}

	for(int i = 1; i < n; i++){
		long long ans = bfs(i+1,1);
		if(ans == -1)
			printf("-1\n");
		else{
			if(v3[i+1][1])
				printf("%lld\n",ans + 2*i);
			else
				printf("%lld\n",ans + i);
		}
	}
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define ff first
#define ss second
#define pb push_back
#define mp make_pair

bool vis[200005][2];
long long v2[200005][2];
int v[200005];
int n;

long long bfs(int x, int e){
	if(x <= 0 || x > n)
		return 0;
	if(x == 1)
	    return -1;
	}
	if(vis[x][e]){
		if(v2[x][e] == 0) return -1;
		return v2[x][e];
	}

	vis[x][e] = 1;

	long long a;

	if(e)
		a = bfs(x - v[x], !e);
	else
		a = bfs(x + v[x], !e);
	if(a == -1)
		return v2[x][e] = -1
	return v2[x][e] = a + v[x];

}

int main(){
	scanf("%d",&n);
	for(int i = 0; i < n-1; i++)
		scanf("%d",v+i+2);

	for(int i = 2; i <= n; i++){
		if(!vis[i][0])
			bfs(i,0);

		if(!vis[i][1])
			bfs(i,1);
	}

	for(int i = 1; i < n; i++){
		long long ans = bfs(i+1,1);
		if(ans == -1)
			printf("-1\n");
		else{
		    printf("%lld\n",ans + i);
		}
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define forr(n) for (int i=0;i<n;i++)
#define pb push_back
#define len size()
#define mems(a,v) memset(a,v,(int)sizeof a)
#define all(v) v.begin(),v.end()
#define sz(v)  ((int)((v).size()))
#define rall(v) v.rbegin(),v.rend()
#define mp(x,y) make_pair(x,y)
#define dist(x,y,xx,yy) (sqrt((x-xx)*(x-xx)+ (y-yy)*(y-yy)))
#define summ(n) (((n*n)+n)/2)
#define fr first
#define se second
#define pf printf
#define sc scanf
#define V vector
#define nl cout<<"\n";
#define SPC <<" "<<
#define deb(s) cout<<s<<endl;
#define PI (double)3.14159265358979323846264338
#define MAX 1000000007
#define MOD 1000000009
#define md(x,y) ((x%y+y)%y)
#define oo (int)1e9
#define INF 1000000000
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef int I;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;

int main()
{
    string s;
    while(cin>>s)
    {
        bool flag=false;
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='a'&&flag)
            {
                flag=false;
                break;
            }
            if(s[i]=='a')
                continue;
            else
                {
                    s[i]=s[i]-1;
                    flag=true;
                }
        }
        cout<<s<<endl;
    }
}


#include <bits/stdc++.h>
using namespace std;
#define forr(n) for (int i=0;i<n;i++)
#define pb push_back
#define len size()
#define mems(a,v) memset(a,v,(int)sizeof a)
#define all(v) v.begin(),v.end()
#define sz(v)  ((int)((v).size()))
#define rall(v) v.rbegin(),v.rend()
#define mp(x,y) make_pair(x,y)
#define dist(x,y,xx,yy) (sqrt((x-xx)*(x-xx)+ (y-yy)*(y-yy)))
#define summ(n) (((n*n)+n)/2)
#define fr first
#define se second
#define pf printf
#define sc scanf
#define V vector
#define nl cout<<"\n";
#define SPC <<" "<<
#define deb(s) cout<<s<<endl;
#define PI (double)3.14159265358979323846264338
#define MAX 1000000007
#define MOD 1000000009
#define md(x,y) ((x%y+y)%y)
#define oo (int)1e9
#define INF 1000000000
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef int I;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;

int main()
{
    string s;
    while(cin>>s)
    {
        bool flag=false;
        int i=0;
        if(s[0]=='a')
            i=1;
        set<string>se;
        se.insert(s);
        for(;i<s.size();i++)
        {
            if(s[i]=='a')
            {
                break;
            }
        }
        int j=0;
        if(s[0]=='a')
            j=1;
        for(;j<i;j++)
            s[j]=s[j]-1;
        cout<<s<<endl;
    }
}


#include <bits/stdc++.h>
using namespace std;
#define forr(n) for (int i=0;i<n;i++)
#define pb push_back
#define len size()
#define mems(a,v) memset(a,v,(int)sizeof a)
#define all(v) v.begin(),v.end()
#define sz(v)  ((int)((v).size()))
#define rall(v) v.rbegin(),v.rend()
#define mp(x,y) make_pair(x,y)
#define dist(x,y,xx,yy) (sqrt((x-xx)*(x-xx)+ (y-yy)*(y-yy)))
#define summ(n) (((n*n)+n)/2)
#define fr first
#define se second
#define pf printf
#define sc scanf
#define V vector
#define nl cout<<"\n";
#define SPC <<" "<<
#define deb(s) cout<<s<<endl;
#define PI (double)3.14159265358979323846264338
#define MAX 1000000007
#define MOD 1000000009
#define md(x,y) ((x%y+y)%y)
#define oo (int)1e9
#define INF 1000000000
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef int I;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;

int main()
{
    string s;
    while(cin>>s)
    {
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='a')
                continue;
            else
                {
                    if(s[i]=='z')
                        s[i]='a';
                    else
                        s[i]=s[i]-1;
                    if(s[i+1]=='a')
                        break;
                }
        }
        cout<<s<<endl;
    }
}


#include<bits/stdc++.h>
using namespace std;
string a;
int i,n,fipos=-1,lpos=-1;
bool alla=true,inside=false;
int main()
{
    cin>>a;
    n=a.size();
    for(i=0;i<n;i++)
    {
        if(a[i]=='a')
        {
            if(inside==false) continue;
            else break;
        }
        inside=true;
        alla=false;
        if(fipos==-1) fipos=i; //first pos
        lpos=i;
    }

    if(alla==true)
    {
        cout<<a.substr(0,a.size()-1);
        cout<<"z";
        return 0;
    }

    for(i=0;i<fipos;i++) cout<<a[i];
    for(i=fipos;i<=lpos;i++)
    {
        cout<<(char)(a[i]-1);
    }
    for(;i<n;i++) cout<<a[i];
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
string s,be="",mid="",af="";
cin>>s;
int pos=s.size(),pos2=s.size();
for(int i=0;i<s.size();i++)
{
if(s[i]!='a')
{pos=i;break;}
else
be=be+s[i];
}
//cout<<"before "<<be<<"\n";
if(pos+1<=s.size())
{
for(int i=pos;i<s.size();i++)
{
if(s[i]=='a')
{pos2=i;break;}
else
mid=mid+char(s[i]-1);
}
//cout<<"mid "<<mid<<"\n";
if(pos2+1<=s.size())
{
for(int i=pos2;i<s.size();i++)
af=af+s[i];
}
//cout<<"after "<<af<<"\n";
cout<<be<<mid<<af<<"\n";
}
else
{
for(int i=0;i<s.size()-1;i++)
cout<<s[i];
cout<<"z"<<"\n";

}
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    string s,be="",mid="",af="";
    cin>>s;
    int pos=s.length(),pos2=s.length();
    for(int i=0;i<s.length();i++)
    {
        if(s[i]!='a')
        {pos=i;break;}
        else
        be=be+s[i];
    }
        //cout<<"before "<<be<<"\n";
    if(pos+1<=s.length())
    {
        for(int i=pos;i<s.length();i++)
        {
        if(s[i]=='a')
        {pos2=i;break;}
        else
        mid=mid+char(s[i]-1);
        }
        //cout<<"mid "<<mid<<"\n";
        if(pos2+1<=s.length())
        {
        for(int i=pos2;i<s.length();i++)
        af=af+s[i];
        }
        //cout<<"after "<<af<<"\n";
        cout<<be<<mid<<af<<"\n";
        }
        else
        {
        for(int i=0;i<s.length()-1;i++)
        cout<<s[i];
        cout<<"z"<<"\n";

    }
}


#include<bits/stdc++.h>
using namespace std;
string a;
int i;
int main()
{
    cin>>a;
    while(i<a.size() and a[i]=='a') i++;
    if(i==a.size()) a.pop_back(), a+="z";
    while(i<a.size() and a[i]!='a') a[i++]--;
    cout<<a;
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
string s,be="",mid="",af="";
cin>>s;
int pos=s.length(),pos2=s.length();
for(int i=0;i<s.length();i++)
{
if(s[i]!='a')
{pos=i;break;}
else
be=be+s[i];
}
//cout<<"before "<<be<<"\n";
if(pos+1<=s.length())
{
for(int i=pos;i<s.length();i++)
{
if(s[i]=='a')
{pos2=i;break;}
else
mid=mid+char(s[i]-1);
}
//cout<<"mid "<<mid<<"\n";
if(pos2+1<=s.length())
{
for(int i=pos2;i<s.length();i++)
af=af+s[i];
}
//cout<<"after "<<af<<"\n";
cout<<be<<mid<<af<<"\n";
}
else
{
for(int i=0;i<s.length()-1;i++)
cout<<s[i];
cout<<"z"<<"\n";

}
}


#include<bits/stdc++.h>
using namespace std;
string a;
int i;
int main()
{
    cin>>a;
    while(i<a.size() and a.find('a',i)==i) i++;
    if(i==a.size()) a.pop_back(), a+="z";
    while(i<a.size() and a.find('a',i)!=i) a[i++]--;
    cout<<a;
    return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<map>
#include<cmath>
using namespace std;
inline void lwyin(){
	#ifdef lwy
	#else
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
}
char s[100010];
bool flag=false;
int main(){
	scanf("%s",s);
	int lens=strlen(s);
	int k;
	for(int i=0;i<=lens-1;i++){
		if(s[i]!='a'){
			k=i;
			break;
		}
		printf("%c",s[i]);
	}
	for(int i=k;i<=lens-1;i++){
		if(s[i]=='a'){
			flag=true;
		}
		if(!flag){
			printf("%c",char(s[i]-1));
		}
		else printf("%c",s[i]);
	}
	return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<map>
#include<cmath>
using namespace std;
inline void lwyin(){
	#ifdef lwy
	#else
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
}
char s[100010];
bool flag=false;
int main(){
	scanf("%s",s);
	int lens=strlen(s);
	int k;
	for(int i=0;i<=lens-1;i++){
		if(s[i]!='a'){
			k=i;
			break;
		}
		if(i==lens-1) printf("z");
		else printf("%c",s[i]);
	}
	for(int i=k;i<=lens-1;i++){
		if(s[i]=='a'){
			flag=true;
		}
		if(!flag){
			printf("%c",char(s[i]-1));
		}
		else printf("%c",s[i]);
	}
	return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<map>
#include<cmath>
using namespace std;
inline void lwyin(){
	#ifdef lwy
	#else
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
}
char s[100010];
bool flag=false;
int main(){
	scanf("%s",s);
	int lens=strlen(s);
	if(s[0]=='a'&&lens==1){
		printf("z");
		return 0;
	}
	int k;
	for(int i=0;i<=lens-1;i++){
		if(s[i]!='a'){
			k=i;
			break;
		}
		printf("%c",s[i]);
	}
	for(int i=k;i<=lens-1;i++){
		if(s[i]=='a'){
			flag=true;
		}
		if(!flag){
			printf("%c",char(s[i]-1));
		}
		else printf("%c",s[i]);
	}
	return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<map>
#include<cmath>
using namespace std;
inline void lwyin(){
	#ifdef lwy
	#else
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
}
char s[100010];
bool flag=false;
int main(){
	scanf("%s",s);
	if(s=='a'){
		printf("z");
		return 0;
	}
	int lens=strlen(s);
	int k;
	for(int i=0;i<=lens-1;i++){
		if(s[i]!='a'){
			k=i;
			break;
		}
		printf("%c",s[i]);
	}
	for(int i=k;i<=lens-1;i++){
		if(s[i]=='a'){
			flag=true;
		}
		if(!flag){
			printf("%c",char(s[i]-1));
		}
		else printf("%c",s[i]);
	}
	return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<map>
#include<cmath>
using namespace std;
inline void lwyin(){
	#ifdef lwy
	#else
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
}
char s[100010];
bool flag=false;
int main(){
	scanf("%s",s);
	int lens=strlen(s);
	int k;
	for(int i=0;i<=lens-1;i++){
		if(s[i]!='a'){
			k=i;
			break;
		}
		printf("%c",s[i]);
	}
	for(int i=k;i<=lens-1;i++){
		if(s[i]=='a'){
			flag=true;
		}
		if(flag==false&&i==lens-1){
			printf("z");
			return 0;
		}
		if(!flag){
			printf("%c",char(s[i]-1));
		}
		else printf("%c",s[i]);
	}
	return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<map>
#include<cmath>
using namespace std;
inline void lwyin(){
	#ifdef lwy
	#else
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
}
char s[100010];
bool flag=false;
int main(){
	scanf("%s",s);
	int lens=strlen(s);
	int k=0;
	for(int i=0;i<=lens-1;i++){
		if(s[i]!='a'){
			k=i;
			break;
		}
		if(i==lens-1){
			printf("z");
			return 0;
		}
		else printf("%c",s[i]);
	}
	for(int i=k;i<=lens-1;i++){
		if(s[i]=='a'){
			flag=true;
		}
		if(!flag){
			printf("%c",char(s[i]-1));
		}
		else printf("%c",s[i]);
	}
	return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  vector <int> A;
  A.pb(0);
  for(int i=0;i<n;i++) if(in[i] == 'a') A.pb(i);
  if(A.size() == 1) {
    for(int i=0;i<n;i++) in[i]--;
    printf("%s",in);
    return 0;
  }
  else {
    for(int i=1;i<A.size();i++){
      if(A[i] - A[i - 1] > 1) {
        for(int j=A[i - 1]+1;j<A[i];j++) in[j]--;
        printf("%s",in);
        return 0;
      }
    }
  }
  printf("%s",in);
  return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  int last = 0;
  for(int i=0;i<n;i++){
    if(in[i] == 'a') last++;
    else break;
  }
  if(i == n) in[n - 1] = 'z';
  else {
    for(int i=last;i<n;i++){
      if(in[i] == 'a') break;
      in[i]--;
    }
  }
  printf("%s",in);
  return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  vector <int> A;
  A.pb(-1);
  for(int i=0;i<n;i++) if(in[i] == 'a') A.pb(i);
  A.pb(n);
  if(A.size() == 1) {
    for(int i=0;i<n;i++) in[i]--;
    printf("%s",in);
    return 0;
  }
  else {
    for(int i=1;i<A.size();i++){
      if(A[i] - A[i - 1] > 1) {
        for(int j=A[i - 1]+1;j<A[i];j++) in[j]--;
        printf("%s",in);
        return 0;
      }
    }
  }
  in[n - 1] = 'z';
  printf("%s",in);
  return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  vector <int> A;
  A.pb(-1);
  for(int i=0;i<n;i++) if(in[i] == 'a') A.pb(i);
  A.pb(n);
  if(A.size() == 1) {
    for(int i=0;i<n;i++) in[i]--;
    printf("%s",in);
    return 0;
  }
  else {
    for(int i=1;i<A.size();i++){
      if(A[i] - A[i - 1] > 1) {
        for(int j=A[i - 1]+1;j<A[i];j++) in[j]--;
        printf("%s",in);
        return 0;
      }
    }
  }
  in[0] = 'z';
  printf("%s",in);
  return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  int last = 0;
  for(int i=0;i<n;i++){
    if(in[i] == 'a') last++;
    else break;
  }
  if(last == n) in[n - 1] = 'z';
  else {
    for(int i=last;i<n;i++){
      if(in[i] == 'a') break;
      in[i]--;
    }
  }
  printf("%s",in);
  return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  for(int i=0;i<n;i++){
    if(in[i] != 'a'){
      int x = i + 1;
      while(in[x] && in[x] != 'a') x++;
      int tp = i;
      while(tp < x) {
        in[tp] = in[tp]--;
        tp++;
      }
      printf("%s",in);
      return 0;
    }
  }
  printf("%s",in);
  return 0;
}


#include <bits/stdc++.h>

#define gc getchar unlocked
#ifndef ONLINE JUDGE
#define gc getchar
#endif // ONLINE JUDGE

#define pc putchar_unlocked
#ifndef ONLINE JUDGE
#define pc putchar
#endif // ONLINE JUDGE

#define fRead           freopen("input.txt","r",stdin)
#define fWrite          freopen ("output.txt","w",stdout)

#define eps             1e-8
#define inf             0x3f3f3f3f
#define INF             2e18
#define LL              long long
#define ULL             unsigned long long
#define PI              acos(-1.0)
#define pb              push_back
#define mk              make_pair
#define pii             pair<int,int>
#define pLL             pair<LL,LL>
#define ff              first
#define ss              second
#define all(a)          a.begin(),a.end()
#define rall(a)         a.rbegin(),a.rend()
#define SQR(a)          ((a)*(a))
#define Unique(a)       sort(all(a)),a.erase(unique(all(a)),a.end())
#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(min(a,b),min(c,d))
#define max4(a,b,c,d)   max(max(a,b),max(c,d))
#define max5(a,b,c,d,e) max(max3(a,b,c),max(d,e))
#define min5(a,b,c,d,e) min(min3(a,b,c),min(d,e))
#define Iterator(a)     __typeof__(a.begin())
#define rIterator(a)    __typeof__(a.rbegin())
#define FOR(a,it)       for(Iterator(a) it = a.begin();it != a.end(); it++)
#define rFOR(a,it)      for(rIterator(a) it = a.rbegin();it != a.rend(); it++)
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(0)

using namespace std;

const int MOD = 1e9 + 7;
int fx[] = {+1,-1,+0,+0,+1,+1,-1,-1,+0};
int fy[] = {+0,+0,+1,-1,+1,-1,+1,-1,+0};
template <typename T> inline T GCD (T a,T b ) {a = abs(a);b = abs(b);while ( b ) { a = a % b; swap ( a, b ); } return a;}
template <typename T> inline T LCM(T x,T y){T tp = GCD(x,y);if( (x / tp) * 1. * y > 9e18) return 9e18;return (x / tp) * y;}
template <typename T> inline T BigMod(T A,T B,T M){T ret = 1;while(B){if(B & 1) ret = (ret * A) % M;A = (A * A) % M;B = B >> 1;}return ret;}
template <typename T> inline T InvMod (T A,T M){return BigMod(A,M-2,M);}
/*---------------------------fast I/O------------------------------------*/
#define scani2(a,b) scani(a) , scani(b)
#define scani3(a,b,c) scani(a), scani(b), scani(c)
#define scani4(a,b,c,d) scani(a), scani(b), scani(c), scani(d)
#define scani5(a,b,c,d,e) scani(a), scani(b), scani(c), scani(d) , scani(e)
template <typename T> T scani(T &n){n = 0;bool negative = false;char c = gc();while( c < '0' || c > '9'){if(c == '-') negative = true;c = gc();}while(c >= '0' && c <= '9'){n = n*10 + c-48;c = gc();}if(negative) n = ~(n-1);return n;}
template <typename T> void write(T n,int type = true){if(n<0) {pc('-');n = -n;}if(!n) {pc('0');if(type==32) pc(' '); else if(type) pc('\n'); return;}char buff[22];int len = 0;while(n) buff[len++] = n%10+48,n/=10;for(int i=len-1;i>=0;i--) pc(buff[i]);if(type==32) pc(' '); else if(type) pc('\n');}
int scans(char *a){int i=0;char c = 0;while(c < 33) c = gc();while(c > 33){a[i++] = c;c = gc();}a[i] = 0;return i;}
/*********************************************** End of template *********************************************/

char in[100005];

int main()
{
  int n = scans(in);
  vector <int> A;
  A.pb(-1);
  for(int i=0;i<n;i++) if(in[i] == 'a') A.pb(i);
  if(A.size() == 1) {
    for(int i=0;i<n;i++) in[i]--;
    printf("%s",in);
    return 0;
  }
  else {
    for(int i=1;i<A.size();i++){
      if(A[i] - A[i - 1] > 1) {
        for(int j=A[i - 1]+1;j<A[i];j++) in[j]--;
        printf("%s",in);
        return 0;
      }
    }
  }
  printf("%s",in);
  return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[100001];
	cin.getline(s,100001);
	bool found=false;
	long pos=-1;
	for(int i=0;s[i]!='\0';i++){
		if(s[i]!='a'){
			pos=i;
			found = true;
			break;
		}
	}
	if(found==false){
		long len=strlen(s);
		s[len-1]='z';
		cout<<s;
		return 1;
	}
	for(int i=pos;s[i]!='\0';i++){
		if(s[i]=='a')
			break;
		else
			s[i]=s[i]-1;
	}
	cout<<s;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[20000];
	cin.getline(s,200000);
	bool found=false;
	long pos=-1;
	for(int i=0;s[i]!='\0';i++){
		if(s[i]!='a'){
			pos=i;
			found = true;
			break;
		}
	}
	if(found==false){
		long len=strlen(s);
		s[len-1]='z';
		cout<<s;
		return 1;
	}
	for(int i=pos;s[i]!='\0';i++){
		if(s[i]=='a')
			break;
		else
			s[i]=s[i]-1;
	}
	cout<<s;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[200000];
	cin.getline(s,200000);
	long x=-1;
	long len=strlen(s);
	for(int i=0;i<len;i++){
		if(s[i]!='a'){
			x=i;
			break;
		}
	}
	if(x==-1){
		s[len-1]='z';
		cout<<s;
	}else{
		for(int i=x;i<len;i++){
			if(s[i]=='a')
				break;
			else
				s[i]=s[i]-1;
		}
		cout<<s;
	}
}


#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[200000];
	cin.getline(s,200000);
	long x=-1;
	for(int i=0;i<strlen(s);i++){
		if(s[i]!='a'){
			x=i;
			break;
		}
	}
	if(x==-1){
		s[strlen(s)-1]='z';
		cout<<s;
	}else{
		for(int i=x;i<strlen(s);i++){
			if(s[i]=='a')
				break;
			else
				s[i]=s[i]-1;
		}
		cout<<s;
	}
}


#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[20000];
	cin.getline(s,200000);
	bool found=false;
	long pos=-1;
	for(int i=0;i<strlen(s);i++){
		if(s[i]!='a'){
			pos=i;
			found = true;
			break;
		}
	}
	if(found==false){
		long len=strlen(s);
		s[len-1]='z';
		cout<<s;
	}else if(found == true){
		for(int i=pos;i<strlen(s);i++){
			if(s[i]=='a')
				break;
			else
				s[i]=s[i]-1;
		}
		cout<<s;
	}
}


#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[20000];
	cin.getline(s,200000);
	bool found=false;
	long pos=-1;
	for(int i=0;s[i]!='\0';i++){
		if(s[i]!='a'){
			pos=i;
			found = true;
			break;
		}
	}
	if(found==false){
		long len=strlen(s);
		s[len-1]='z';
		cout<<s;
	}else{
		for(int i=pos;s[i]!='\0';i++){
			if(s[i]=='a')
				break;
			else
				s[i]=s[i]-1;
		}
		cout<<s;
	}
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
char q;
int main()
{
	cin >> s;

	if(s[0] == 'a' && s.size() == 1)
		return cout << 'z' , 0;

	for(int i = 0 ;i < s.size(); i ++)
	{
		if(s[i] != 'a')
			q = char(s[i] - 1);
		else
			q = 'z';

		if(q < s[i] && bs == -1)
			bs = i;
		else if(q > s[i] && bs != -1 && sn == -1)
			sn = i - 1;
	}

	if(sn == -1)
		sn = s.size() - 1;

	for(int i = bs; i <= sn; i ++)
	{
		if(s[i] != 'a')
			s[i] = char(s[i] - 1);
		else
			s[i] = 'z';
	}
	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn;
int main()
{

	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{
		if(s[i] != 'a' && bs == -1)
			bs = i;
		if(bs != -1 && s[i] == 'a' && !sn)
			sn = i - 1;
	}

	if(bs != -1)
	{
		if(!sn)
			sn = s.size() - 1;
		for(int i = bs; i <= sn; i ++)
			s[i] = char(int(s[i]) - 1);
	}

	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
char q;
int main()
{
	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{
		if(s[i] != 'a')
			q = char(s[i] - 1);
		else
			q = 'z';

		if(q == 'z' && s[i] == 'a' && bs == -1)
			bs = i;
		else if(q == 'z' && s[i] == 'a' && bs != -1)
			continue;
		else if(q < s[i] && bs == -1)
			bs = i;
		else if(q > s[i] && bs != -1 && sn == -1)
			sn = i - 1;
	}
	if(sn == -1)
		sn = s.size() - 1;

	for(int i = bs; i <= sn; i ++)
	{
		if(s[i] != 'a')
			s[i] = char(s[i] - 1);
		else
			s[i] = 'z';
	}
	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
char q;
int main()
{
	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{
		s[i] != 'a' ? q = char(int(s[i]) - 1) : q = 'z';
		if(q < s[i] && bs == -1)
			bs = i;
		if(q > s[i] && bs != -1 && sn == -1)
			sn = i - 1;
	}
	if(sn == -1)
		sn = s.size() - 1;

	for(int i = bs; i <= sn; i ++)
		s[i] != 'a' ? s[i] = char(int(s[i]) - 1) : s[i] = 'z';
	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
char q;
int main()
{
	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{

		if(s[i] != 'a')
			q = char(int(s[i]) - 1);
		else
			q = 'z';

		if(q < s[i] && bs == -1)
			bs = i;
		if(q > s[i] && bs != -1 && sn == -1)
			sn = i - 1;
	}
	if(sn == -1)
		sn = s.size() - 1;

	for(int i = bs; i <= sn; i ++)
		if(s[i] != 'a')
			s[i] = char(int(s[i]) - 1);
		else
			s[i] = 'z'	;
	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
char q;
int main()
{
	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{
		if(s[i] != 'a')
			q = char(s[i] - 1);
		else
			q = 'z';

		if(s[i] != 'a' && q < s[i] && bs == -1)
			bs = i;
		else if(q > s[i] && bs != -1 && sn == -1)
			sn = i - 1;
	}
	if(bs != -1 && sn == -1)
		sn = s.size() - 1;

	if(bs == -1)
		bs = s.size() - 1 , sn = s.size() - 1;

	for(int i = bs; i <= sn; i ++)
	{
		if(s[i] != 'a')
			s[i] = char(s[i] - 1);
		else
			s[i] = 'z';
	}
	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
int main()
{

	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{
		if(s[i] != 'a' && bs == -1)	bs = i;
		if(bs != -1 && s[i] == 'a' && sn == -1)	sn = i - 1;
	}

	if(bs != -1)
	{
		if(sn == -1)
			sn = s.size() - 1;
		for(int i = bs; i <= sn; i ++)
			s[i] = char(int(s[i]) - 1);
	}
	cout << s;
	return 0;
}


#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>

#define  ff first
#define  ss second
#define  maxn 100009
#define  ll long long
#define  pb push_back
#define  pp pop_back()
#define  inf 1000000009
#define  pii pair <int , int>
#define  mid(x, y)	((x+y)>>1)
#define  all(x) x.begin(),x.end()
#define  llinf 1000000000000000009
#define  pll pair <long long , long long>
#define  __lcm(x, y) (x*y) / __gcd (x, y);
#define  random srand ((unsigned)time(NULL)); int r=rand()%10+1;
#define  tr(i,c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++)

using namespace std;
using namespace __gnu_pbds;
typedef tree<long long int,null_type,less<long long int>,rb_tree_tag,tree_order_statistics_node_update> didar;

string s;
int bs = -1 , sn = -1;
char q;
int main()
{
	cin >> s;

	for(int i = 0 ;i < s.size(); i ++)
	{
		if(s[i] != 'a')
			q = char(s[i] - 1);
		else
			q = 'z';

		if(q == 'z' && s[i] == 'a' && bs == -1)
			bs = i;
		else if(q == 'z' && s[i] == 'a' && bs != -1)
			continue;
		else if(q < s[i] && bs == -1)
			bs = i;
		else if(q > s[i] && bs != -1 && sn == -1)
			sn = i - 1;
	}
	if(sn == -1)
		sn = s.size() - 1;
	cout<<bs<< " " << sn << endl;

	for(int i = bs; i <= sn; i ++)
	{
		if(s[i] != 'a')
			s[i] = char(s[i] - 1);
		else
			s[i] = 'z';
	}
	cout << s;
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans;
	cin >> s;
	ans = s;
	int c = 0;
	for (int i = 0; i < s.length(); i++) {
		if (s[i] == 'a')c++;
	}
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	for (int i = 0; i < s.length(); i++) {
		if (ans[i] == 'a')ans[i] = 'z';
		else ans[i]--;
	   if (ans[i]>s[i]) { ans[i] = s[i]; }
	   string y; y = ans;
	   if (ans[i+1] == 'a')ans[i+1] = 'z';
	   else ans[i+1]--;

		   if (ans > y) {
			   ans = y;
			   if(ans<s)break;
		   }
	       ans = y;
	}
	cout << ans;
	//system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans;
	cin >> s;
	ans = s;
	int c = 0;
	while (c < s.length() && s[c] == 'a') { c++; }
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	for (int i = 0; i < s.length(); i++) {
		if (ans[i] == 'a')ans[i] = 'z';
		else ans[i]--;
	   if (ans[i]>s[i]) { ans[i] = s[i]; }
	   string y; y = ans;
	   if (ans[i+1] == 'a')ans[i+1] = 'z';
	   else ans[i+1]--;
		   if (ans > y) {
			   ans = y;
			   if(ans<s)break;
		   }
	       ans = y;
	}
	cout << ans;
	//system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans;
	cin >> s;
	ans = s;
	for (int i = 0; i < s.length(); i++) {
		for (int j = 1; j < 27; j++) {
			if (x[j] == ans[i]) {
				ans[i] = x[j - 1];
				break;
			}
		}
	   if (ans[i]>s[i]) { ans[i] = s[i]; }
	   string y; y = ans;
	   if (i < s.length()) {
		   for (int k = 1; k < 27; k++) {
			   if (x[k] == ans[i + 1]) {
				   ans[i + 1] = x[k - 1];
				   break;
			   }
		   }
	   }
	   if (ans > y) { ans = y; break; }
	   ans = y;
	}
	cout << ans;
	//system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans;
	cin >> s;
	ans = s;
	int c = 0;
	for (int i = 0; i < s.length(); i++) {
		if (s[i] == 'a')c++;
	}
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	for (int i = 0; i < s.length(); i++) {
		for (int j = 1; j < 27; j++) {
			if (x[j] == ans[i]) {
				ans[i] = x[j - 1];
				break;
			}
		}
	   if (ans[i]>s[i]) { ans[i] = s[i]; }
	   string y; y = ans;
		   for (int k = 1; k < 27; k++) {
			   if (x[k] == ans[i + 1]) {
				   ans[i + 1] = x[k - 1];
				   break;
			   }
		   }
		   if (ans > y) {
			   ans = y;
			   if(ans<s)break;
		   }
	       ans = y;
	}
	cout << ans;
//	system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans, y;
	cin >> s;
	ans = s;
	y = s;
	int c = 0;
	while (c < s.length() && s[c] == 'a') { c++; }
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	for (int i = 0; i < s.length(); i++) {
		if (ans[i] != 'a') {
			ans[i]--;
		}
			 if (ans < y)y = ans;
			 if (y != s && ans[i+1] == 'a')break;
		}
	cout << ans;
//	system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans, y;
	cin >> s;
	ans = s;
	y = s;
	int c = 0;
	while (c < s.length() && s[c] == 'a') { c++; }
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	for (int i = c; i < s.length(); i++) {
		if (ans[i] != 'a') {
			ans[i]--;
		}
			 if (ans < y)y = ans;
			 if (y != s && ans[i+1] == 'a')break;
		}
	cout << ans;
	//system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans, y;
	cin >> s;
	ans = s;
	y = s;
	int c = 0;
	while (c < s.length() && s[c] == 'a') { c++; }
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	for (int i = 0; i < s.length(); i++) {
		if (ans[i] != 'a') {
			ans[i]--;
		}
			if (y != s && ans[i] == 'a')break;
			else if (ans < y)y = ans;
		}
	cout << ans;
//	system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans, y;
	cin >> s;
	ans = s;
	y = s;
	int c = 0;
	while (c < s.length() && s[c] == 'a') { c++; }
	if (c == s.length()) {
		s[c - 1] = 'z';
		cout << s; return 0;
	}
	while(c < s.length()&&s[c]!='a') {
			ans[c]--;
			c++;
		}
	cout << ans;
//	system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans;
	cin >> s;
	ans = s;
	for (int i = 0; i < s.length(); i++) {
		for (int j = 1; j < 27; j++) {
			if (x[j] == ans[i]) {
				ans[i] = x[j - 1];
				break;
			}
		}
	   if (ans[i]>s[i]) { ans[i] = s[i]; }
	   string y; y = ans;
	   for (int k = 1; k < 27; k++) {
		   if (x[k] == ans[i+1]) {
			   ans[i+1] = x[k - 1];
			   break;
		   }
	   }
	   if (ans > y) { ans = y; break; }
	   ans = y;
	}
	cout << ans;
//	system("pause");
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
//#include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<math.h>
#include<Windows.h>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
map<int, int>m;
#define pp pair<int,int>
bool cmp(const pp &l, const pp &r)
{

	return l.first < r.first;
}

int main() {
	string x = "zabcdefghijklmnopqrstuvwxyz";
	string s, ans;
	cin >> s;
	ans = s;
	for (int i = 0; i < s.length(); i++) {
		for (int j = 1; j < 27; j++) {
			if (x[j] == ans[i]) {
				ans[i] = x[j - 1];
				break;
			}
		}
	   if (ans[i]>s[i]) { ans[i] = s[i]; }
	   string y; y = ans;
		   for (int k = 1; k < 27; k++) {
			   if (x[k] == ans[i + 1]) {
				   ans[i + 1] = x[k - 1];
				   break;
			   }
		   }
		   if (ans > y) { ans = y;
		   if (ans < s)
			   break; }
	       ans = y;
	}
	cout << ans;
//	system("pause");
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;

int main(){
    cin >> s;
    int n = s.size();
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		int pos;
   		for(int i = 0; i < n; i++){ if(s[i] == 'a'){
   			pos = i;
   			break;
   		}
   		}
   		for(int i = (pos == 0 ? pos + 1 : 0); i < n; i++){
   			if(s[i] != 'a'){
   				s[i] = char(s[i]-'a'-1+'a');
   			}
   			else break;
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;

int main(){
    cin >> s;
    int n = s.size();
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		for(int i = 0; i < n; i++){
   			if(s[i] != 'a'){
   				s[i] = char(s[i]-'a'-1+'a');
   				break;
   			}
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;
map <char, int> m;
int main(){
    cin >> s;
    int n = s.size();
    for(int i = 0; i < n; i++){
    	m[s[i]]++;
    }
    if(m['a'] == n) return cout << s, 0;
    if(s.size() == 1){
    	if(s[0] == 'a') cout << 'a';
    	else cout << char(s[0]-'a'-1+'a');
    	return 0;
    }
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		int pos = 0;
   		while(s[pos] == 'a') pos++;
   		for(int i = pos; i < n; i++){
   			if(s[i] != 'a') s[i] = char(s[i]-'a'-1+'a');
   			else break;
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;

int main(){
    cin >> s;
    int n = s.size();
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		int pos;
   		for(int i = 0; i < n; i++){ if(s[i] == 'a'){
   			pos = i;
   			break;
   		}
   		}
   		for(int i = pos+1; i < n; i++){
   			if(s[i] != 'a'){
   				s[i] = char(s[i]-'a'-1+'a');
   			}
   			else break;
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;

int main(){
    cin >> s;
    int n = s.size();
    if(s.size() == 1){
    	if(s[0] == 'a') cout << 'a';
    	else cout << char(s[0]-'a'-1+'a');
    	return 0;
    }
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		int pos;
   		for(int i = 0; i < n; i++){ if(s[i] == 'a'){
   			pos = i;
   			break;
   		}
   		}
   		for(int i = (pos == 0 ? pos + 1 : 0); i < n; i++){
   			if(s[i] != 'a'){
   				s[i] = char(s[i]-'a'-1+'a');
   			}
   			else break;
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;

int main(){
    cin >> s;
    int n = s.size();
    for(int i = 0; i < n; i++){
    	if(s[i] == 'a') continue;
    	else s[i] = char(s[i]-'a'-1+'a');
    }
    cout << s;
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;
map <char, int> m;
int main(){
    cin >> s;
    int n = s.size();
    for(int i = 0; i < n; i++){
    	m[s[i]]++;
    }
    if(m['a'] == n){ s[n-1] = 'z'; return cout << s, 0;
    }
    if(s.size() == 1){
    	if(s[0] == 'a') cout << 'a';
    	else cout << char(s[0]-'a'-1+'a');
    	return 0;
    }
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		int pos = 0;
   		while(s[pos] == 'a') pos++;
   		for(int i = pos; i < n; i++){
   			if(s[i] != 'a') s[i] = char(s[i]-'a'-1+'a');
   			else break;
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int inf = (int)(1e9) + 100;
const int mod = (int)(1e9) + 100;
const int maxn = (int)(2e5) + 100;

#define pb push_back
#define mp make_pair
#define sz(a) (int)(a.size())
#define all(a) a.begin(), a.end()
#define ff first
#define ss second
#define ll long long
#define pii pair <int, int>
#define pll pair <ll, ll>
#define vi vector <int>
#define vll vector <ll>
#define vpi vector <pii>
#define vpl vector <pll>
#define sc1(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define frw(i, p, n) for(int i = p; i <= n; i++)
#define bck(i, n, p) for(int i = n; i >= p; i--)
#define mem(a) memset(a, 0, sizeof(a))

string s;
map <char, int> m;
int main(){
    cin >> s;
    int n = s.size();
    for(int i = 0; i < n; i++){
    	m[s[i]]++;
    }
    if(m['a'] == n) return cout << s, 0;
    if(s.size() == 1){
    	if(s[0] == 'a') cout << 'a';
    	else cout << char(s[0]-'a'-1+'a');
    	return 0;
    }
    if(s.find("a") == -1){
    	for(int i = 0; i < n; i++){
    		s[i] = char(s[i]-'a'-1+'a');
    	}
    	cout << s;
   	}
   	else{
   		int pos;
   		for(int i = 0; i < n; i++){ if(s[i] == 'a'){
   			pos = i;
   			break;
   		}
   		}
   		for(int i = (pos == 0 ? pos + 1 : 0); i < n; i++){
   			if(s[i] != 'a'){
   				s[i] = char(s[i]-'a'-1+'a');
   			}
   			else break;
   		}
   		cout << s;
   	}
	#ifndef ONLINE_JUDGE
        fprintf(stderr, "Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
	return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s, d;
    cin>>s;
   int check=0;

    for(int i=0; i<s.size(); i++)
    {

        if(s[i]!='a')
        {
            s[i]--;
            check=1;
        }
        else if(s[i]=='a' && check==1)
        {
            break;
        }
    }
    if(check==0)
    {
        s[s.size()-1]='z';
    }
  cout<<s<<endl;
  /** s="phggazcb";
   d=s;
   for(int i=0; i<4; i++)
   {

       s[i]--;
   }
   for(int i=0; i<d.size(); i++)
   {
        if(d[i]=='a')
        d[i]='z';
       else
       d[i]--;
   }
   if(d<s)
    cout<<'d'<<' '<<d<<endl;
   else if(s<d)
    cout<<'s'<<' '<<s<<endl;**/
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
   string s;
   cin>>s;
   vector <int> v;
   int cp=0, is=-1, ie=s.size();
   for(int i=0; i<s.size(); i++)
   {
       if(s[i]=='a')
       {
           if(cp==0)
           {
               is=i;
               cp=1;
           }
           else
           {
               ie=i;
               break;
           }
       }
   }
   for(int j=is+1; j<ie; j++)
   {
       s[j]--;
   }
   cout<<s<<endl;

    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s, d;
    cin>>s;
   int check=0;

    for(int i=0; i<s.size(); i++)
    {

        if(s[i]!='a')
        {
            s[i]--;
            check=1;
        }
        else if(s[i]=='a' && check==1)
        {
            break;
        }
    }
    if(check==0)
    {
        s[s.size()-1]++;
    }
  cout<<s<<endl;

    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
   string s;
   cin>>s;

   for(int i=0; i<s.size(); i++)
   {
       if(s[i]=='a' && i!=0)
       {
           break;
       }
       if(s[i]!='a')
        s[i]--;

   }

   cout<<s<<endl;

    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s, d;
    cin>>s;
   int check=0, test=0;
    //d=s;
    for(int i=0; i<s.size(); i++)
    {

        if(s[i]=='a')
            test++;
        if(s[i]!='a')
        {
            s[i]--;
            check=1;
        }
        else if(s[i]=='a' && check==1)
        {
            test++;
            break;
        }
    }
    if(test==s.size())
    {
        s[s.size()-1]++;
    }
    cout<<s<<endl;

    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s, d;
    cin>>s;
    int check=0;
    //d=s;
    for(int i=0; i<s.size(); i++)
    {

        if(s[i]!='a')
        {
            s[i]--;
            check=1;
        }
        else if(s[i]=='a' && check==1)
        {
            break;
        }

    }
    cout<<s<<endl;

    return 0;
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

const int N = 1e5+10;

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    string s;
    cin >> s;
    int len = s.length();
    if (s.find('a') == s.npos)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        int pos = s.find('a');
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i < pos; i++)
                cout << trans(s[i]);
            for (int i = pos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos == 0
        else if (s.find('a', 1) == s.npos) // no second 'a', first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            int spos = s.find('a', 1);
            cout << s[0];
            for (int i = 1; i < spos; i++)
                cout << trans(s[i]);
            for (int i = spos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
    }
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

const int N = 1e5+10;

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    string s;
    cin >> s;
    int len = s.length();
    if (s.find('a') == s.npos)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        int pos = s.find('a');
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i < pos; i++)
                cout << trans(s[i]);
            for (int i = pos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos == 0
        else if (s.find('a', 1) == s.npos) // no second 'a', first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            int spos = s.find('a', 1);
            if (spos - pos == 1)
            {
                while (spos - pos == 1)
                {
                    pos = spos;
                    spos = s.find('a', pos+1);
                    if (spos == s.npos)
                    {
                        for (int i = 0; i <= pos; i++)
                            cout << s[i];
                        for (int i = pos+1; i < len; i++)
                            cout << trans(s[i]);
                        cout << endl;
                        return 0;
                    }
                    if (spos == len-1)
                    {
                        for (int i = 0; i < len; i++)
                            cout << s[i];
                        cout << endl;
                        return 0;
                    }
                }
                int spos = s.find('a', pos+1);
                if (spos == s.npos)
                    spos = len;
                for (int i = 0; i <= pos; i++)
                    cout << s[i];
                for (int i = pos+1; i < spos; i++)
                    cout << trans(s[i]);
                for (int i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
            else
            {
                cout << s[0];
                for (int i = 1; i < spos; i++)
                    cout << trans(s[i]);
                for (int i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
        }
    }
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

const int N = 1e5+10;
char s[N];
int dp[N][2]; // dp[i][0] ith

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    cin >> s;
    int len = (int)strlen(s);
    if (find(s, s+len, 'a')-s == len)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        int pos = int(find(s, s+len, 'a') - s);
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i < pos; i++)
                cout << trans(s[i]);
            for (int i = pos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos =- 0
        else if (find(s+1, s+len, 'a')-s == len) // no second a, first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            int spos = int(find(s+1, s+len, 'a') - s);
            cout << s[0];
            for (int i = 1; i < spos; i++)
                cout << trans(s[i]);
            for (int i = spos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
    }
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <string>
using namespace std;

inline void trans(char & ch)
{
    (ch == 'a') ? ch = 'z' : ch--;
}

int main()
{
    string s;
    cin >> s;
    int len = s.length();
    for (int i = 0; i < len; i++)
    {
        if (s[i] != 'a' || i == len-1)
        {
            int pos = s.find('a', i+1);
            if (pos == s.npos)
                pos = len;
            for (int j = i; j < pos; j++)
            {
                trans(s[j]);
            }
            break;
        }
    }
    cout << s << endl;
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    string s;
    cin >> s;
    llint len = s.length();
    if (s.find('a') == s.npos)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        llint pos = s.find('a');
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i < pos; i++)
                cout << trans(s[i]);
            for (llint i = pos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos == 0
        else if (s.find('a', 1) == s.npos) // no second 'a', first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            llint spos = s.find('a', 1);
            if (spos - pos == 1)
            {
                while (spos - pos == 1)
                {
                    pos = spos;
                    spos = s.find('a', pos+1);
                    if (spos == s.npos)
                    {
                        for (int i = 0; i <= pos; i++)
                            cout << s[i];
                        for (llint i = pos+1; i < len; i++)
                            cout << trans(s[i]);
                        cout << endl;
                        return 0;
                    }
                }
                spos = s.find('a', pos+1);
                if (spos == s.npos)
                    spos = len;
                for (int i = 0; i <= pos; i++)
                    cout << s[i];
                for (llint i = pos+1; i < spos; i++)
                    cout << trans(s[i]);
                for (llint i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
            else
            {
                cout << s[0];
                for (int i = 1; i < spos; i++)
                    cout << trans(s[i]);
                for (llint i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
        }
    }
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

const int N = 1e5+10;

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    string s;
    cin >> s;
    int len = s.length();
    if (s.find('a') == s.npos)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        int pos = s.find('a');
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i < pos; i++)
                cout << trans(s[i]);
            for (int i = pos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos == 0
        else if (s.find('a', 1) == s.npos) // no second 'a', first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            int spos = s.find('a', 1);
            if (spos - pos == 1)
            {
                while (spos - pos == 1)
                {
                    pos = spos;
                    spos = s.find('a', pos+1);
                    if (spos == s.npos)
                    {
                        for (int i = 0; i < spos; i++)
                            cout << s[i];
                        for (int i = spos; i < len; i++)
                            cout << trans(s[i]);
                        cout << endl;
                        return 0;
                    }
                    if (spos == len-1)
                    {
                        for (int i = 0; i < len; i++)
                            cout << s[i];
                        cout << endl;
                        return 0;
                    }
                }
                for (int i = 0; i <= pos; i++)
                    cout << s[i];
                for (int i = pos+1; i < len; i++)
                    cout << trans(s[i]);
                cout << endl;
            }
            else
            {
                cout << s[0];
                for (int i = 1; i < spos; i++)
                    cout << trans(s[i]);
                for (int i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
        }
    }
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

const int N = 1e5+10;

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    string s;
    cin >> s;
    int len = s.length();
    if (s.find('a') == s.npos)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        int pos = s.find('a');
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i < pos; i++)
                cout << trans(s[i]);
            for (int i = pos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos == 0
        else if (s.find('a', 1) == s.npos) // no second 'a', first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            int spos = s.find('a', 1);
            if (spos - pos == 1)
            {
                while (spos - pos == 1)
                {
                    pos = spos;
                    spos = s.find('a', pos+1);
                    if (spos == s.npos)
                    {
                        for (int i = 0; i < spos; i++)
                            cout << s[i];
                        for (int i = spos; i < len; i++)
                            cout << trans(s[i]);
                        cout << endl;
                        return 0;
                    }
                    if (spos == len-1)
                    {
                        for (int i = 0; i < len; i++)
                            cout << s[i];
                        cout << endl;
                        return 0;
                    }
                }
                int spos = s.find('a', pos+1);
                if (spos == s.npos)
                    spos = len;
                for (int i = 0; i <= pos; i++)
                    cout << s[i];
                for (int i = pos+1; i < spos; i++)
                    cout << trans(s[i]);
                for (int i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
            else
            {
                cout << s[0];
                for (int i = 1; i < spos; i++)
                    cout << trans(s[i]);
                for (int i = spos; i < len; i++)
                    cout << s[i];
                cout << endl;
            }
        }
    }
}


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef long long llint;

const int N = 1e5+10;
char s[N];
int dp[N][2]; // dp[i][0] ith

char trans(char ch)
{
    if (ch != 'a')
        return ch - 1;
    else
        return 'z';
}

int main()
{
    cin >> s;
    int len = (int)strlen(s);
    if (find(s, s+len, 'a')-s == len)
    {
        for (int i = 0; i < len; i++)
            cout << trans(s[i]);
        cout << endl;
    }
    else
    {
        int pos = int(find(s, s+len, 'a') - s);
        if (pos != 0) // a is not the first one. then switch all before
        {
            for (int i = 0; i <= pos; i++)
                cout << trans(s[i]);
            for (int i = pos+1; i < len; i++)
                cout << s[i];
            cout << endl;
        }
        // pos =- 0
        else if (find(s+1, s+len, 'a')-s == len) // no second a, first one
        {
            cout << s[0];
            for (int i = 1; i < len; i++)
                cout << trans(s[i]);
            cout << endl;
        }
        else // first one, has second // pos = 0
        {
            int spos = int(find(s+1, s+len, 'a') - s);
            cout << s[0];
            for (int i = 1; i < spos; i++)
                cout << trans(s[i]);
            for (int i = spos; i < len; i++)
                cout << s[i];
            cout << endl;
        }
    }
}


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<utility>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;

#define prs printf(" ")
#define prn printf("\n")
#define scc(a) scanf("%c", &a)
#define scst(a) scanf("%s", a)
#define sci(a) scanf("%d", &a)
#define scll(a) scanf("%lld", &a)

#define prc(a) printf("%c", a)
#define prst(a) printf("%s", a)
#define pri(a) printf("%d", a)
#define prll(a) printf("%lld", a)

#define FOR(i, a, b) for(int i = a; i<=b; i++)
#define ROF(i, a, b) for(int i = a; i>=b; i--)
#define pria(i, a, b, A) FOR(i, a, b) {pri(A[i]);prs;}
#define prlla(i, a, b, A) FOR(i, a, b) {prll(A[i]);prs;}
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(__typeof((c).begin()) i = (c).begin(); i != c.end(); i++)

#define mp make_pair
#define pb push_back

inline ll max(ll a, ll b) {return (a<b)?b:a;}
inline ll min(ll a,ll b) {return (a<b)?a:b;}

char s[100005];
int l;
void change(int x, int y){
	if(x>l)
		return;
	else{
		FOR(i, x, y){
			if(s[i]=='a')
				s[i]='z';
			else
				s[i]-=1;
		}
	}
	return;
}

int main(){
	scst(s);
	l = strlen(s);
	bool fl=1;
	FOR(i, 0, l-1)
		if(s[i]!='a'){
			fl=0;
			break;
		}
		else
			fl=1;
	if(fl){
		FOR(i, 0, l-1)
			s[i]='z';
		prst(s);prn;
		return 0;
	}
	vector<int> v;
	int x=l; int y=l;
	FOR(i, 0, l-1){
		if(s[i]=='a'){
			x=i;
			v.pb(i);
		}
	}

	if(v.size()==0){ // no a
		//cout<<"here1";
		change(0, l-1);
	}
	else if(v.size()==1){ // one a
		//cout<<"here2";
		if(x==0)
			change(1, l-1);
		else
			change(0, x-1);
	}
	else if(v[0] != 0){
		change(0, v[0]-1);
	}
	else{ // many adjacent a
		//cout<<"here\n";
		//cout<<v.size()<<endl;
		int i;
		int k;
		FOR(i, 1, v.size()-1){
			//cout<<v[i]-v[i-1]<<endl;
			if(v[i]-v[i-1]>1){
				k=i;
				break;
			}
		}
		i=k;
		//cout<<i<<endl;
		//cout<<v[i-1]+1<<" "<<v[i]-1<<endl;
		change(v[i-1]+1, v[i]-1);
	}
	prst(s);prn;
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<utility>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;

#define prs printf(" ")
#define prn printf("\n")
#define scc(a) scanf("%c", &a)
#define scst(a) scanf("%s", a)
#define sci(a) scanf("%d", &a)
#define scll(a) scanf("%lld", &a)

#define prc(a) printf("%c", a)
#define prst(a) printf("%s", a)
#define pri(a) printf("%d", a)
#define prll(a) printf("%lld", a)

#define FOR(i, a, b) for(int i = a; i<=b; i++)
#define ROF(i, a, b) for(int i = a; i>=b; i--)
#define pria(i, a, b, A) FOR(i, a, b) {pri(A[i]);prs;}
#define prlla(i, a, b, A) FOR(i, a, b) {prll(A[i]);prs;}
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(__typeof((c).begin()) i = (c).begin(); i != c.end(); i++)

#define mp make_pair
#define pb push_back

inline ll max(ll a, ll b) {return (a<b)?b:a;}
inline ll min(ll a,ll b) {return (a<b)?a:b;}

char s[100005];
int l;
void change(int x, int y){
	if(x>l)
		return;
	else{
		FOR(i, x, y){
			if(s[i]=='a')
				s[i]='z';
			else
				s[i]-=1;
		}
	}
	return;
}

int main(){
	int i;
	scst(s);
	l = strlen(s);
	bool fl=1;
	FOR(i, 0, l-1)
		if(s[i]!='a'){
			fl=0;
			break;
		}
		else
			fl=1;
	if(fl){
		FOR(i, 0, l-1)
			s[i]='z';
		prst(s);prn;
		return 0;
	}

	int x=l; int y=l;
	FOR(i, 0, l-1){
		if(s[i]=='a'){
			x = i;
			break;
		}
	}
	FOR(i, x+1, l-1){
		if(s[i]=='a'){
			y = i;
			break;
		}
	}
	//cout<<x<<" "<<y<<endl;
	if(x == l){ // no a
		//cout<<"here1";
		change(0, l-1);
	}
	else if(x!=l && y == l){ // one a
		//cout<<"here2";
		if(x==0)
			change(1, l-1);
		else
			change(0, x-1);
	}
	else if(x!=l && y!=l && y-x==1){ // two adjacent a
		//cout<<"here3";
		if(x==0)
			change(2, l-1);
		else
			change(0, x-1);
	}
	else{ // else
		//cout<<"here4";
		if(x==0)
			change(1, y-1);
		else
			change(0, x-1);
	}
	prst(s);prn;
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<utility>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;

#define prs printf(" ")
#define prn printf("\n")
#define scc(a) scanf("%c", &a)
#define scst(a) scanf("%s", a)
#define sci(a) scanf("%d", &a)
#define scll(a) scanf("%lld", &a)

#define prc(a) printf("%c", a)
#define prst(a) printf("%s", a)
#define pri(a) printf("%d", a)
#define prll(a) printf("%lld", a)

#define FOR(i, a, b) for(int i = a; i<=b; i++)
#define ROF(i, a, b) for(int i = a; i>=b; i--)
#define pria(i, a, b, A) FOR(i, a, b) {pri(A[i]);prs;}
#define prlla(i, a, b, A) FOR(i, a, b) {prll(A[i]);prs;}
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(__typeof((c).begin()) i = (c).begin(); i != c.end(); i++)

#define mp make_pair
#define pb push_back

inline ll max(ll a, ll b) {return (a<b)?b:a;}
inline ll min(ll a,ll b) {return (a<b)?a:b;}

char s[100005];
int l;
vector<ll> v;
void change(int x, int y){
	if(x>=l || x>y || y >= l)
		return;
	else{
		FOR(i, x, y){
			if(s[i]=='a')
				s[i]='z';
			else
				s[i]-=1;
		}
	}
	return;
}

int main(){
	scst(s);
	l = strlen(s);
	bool fl=1;
	int x=l,y=l, i;
	ll k, m;
	FOR(i, 0, l-1){
		if(s[i]=='a'){
			x=i;
			v.pb(i);
		}
	}
	if(s[0]=='a' && l==1){
		s[0]='z';
		prst(s);prn;return 0;
	}
	if(v.size()==0){ // no a
		change(0, l-1);
	}
	else if(v.size()==1){ // one a
		if(x==0)
			change(1, l-1);
		else
			change(0, x-1);
	}
	else if(v[0] != 0){
		change(0, v[0]-1);
	}
	else{ // many adjacent a
		ll f = v.size();
		if(f == l){
			s[l-1]='z';
		}
		else{
			FOR(i, 1, l-1){
				if(s[i]=='a' && s[i-1] == 'a'){
					continue;
				}
				else{
					k=i;
					break;
				}
			}
			m=l;
			FOR(i, k, l-1){
				if(s[i]=='a'){
					m=i;
					break;
				}
			}
			//cout<<k<<" "<<m<<endl;
			change(k, m-1);
		}
	}
	prst(s);prn;
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<utility>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;

#define prs printf(" ")
#define prn printf("\n")
#define scc(a) scanf("%c", &a)
#define scst(a) scanf("%s", a)
#define sci(a) scanf("%d", &a)
#define scll(a) scanf("%lld", &a)

#define prc(a) printf("%c", a)
#define prst(a) printf("%s", a)
#define pri(a) printf("%d", a)
#define prll(a) printf("%lld", a)

#define FOR(i, a, b) for(int i = a; i<=b; i++)
#define ROF(i, a, b) for(int i = a; i>=b; i--)
#define pria(i, a, b, A) FOR(i, a, b) {pri(A[i]);prs;}
#define prlla(i, a, b, A) FOR(i, a, b) {prll(A[i]);prs;}
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(__typeof((c).begin()) i = (c).begin(); i != c.end(); i++)

#define mp make_pair
#define pb push_back

inline ll max(ll a, ll b) {return (a<b)?b:a;}
inline ll min(ll a,ll b) {return (a<b)?a:b;}

char s[100005];
int l;
void change(int x, int y){
	if(x>=l || x>y)
		return;
	else{
		FOR(i, x, y){
			if(s[i]=='a')
				s[i]='z';
			else
				s[i]-=1;
		}
	}
	return;
}

int main(){
	scst(s);
	l = strlen(s);
	bool fl=1;
	FOR(i, 0, l-1)
		if(s[i]!='a'){
			fl=0;
			break;
		}
		else
			fl=1;
	if(fl){
		s[l-1]='z';
		prst(s);prn;
		return 0;
	}

	vector<ll> v;
	int x=l,y=l, i;
	ll k;
	FOR(i, 0, l-1){
		if(s[i]=='a'){
			x=i;
			v.pb(i);
		}
	}
	if(v.size()==0){ // no a
		change(0, l-1);
	}
	else if(v.size()==1){ // one a
		if(x==0)
			change(1, l-1);
		else
			change(0, x-1);
	}
	else if(v[0] != 0){
		change(0, v[0]-1);
	}
	else{ // many adjacent a
		FOR(i, 1, v.size()-1){
			if(v[i]-v[i-1]>1){
				k=i;
				break;
			}
		}
		change(v[k-1]+1, v[k]-1);
	}
	prst(s);prn;
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<utility>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;

#define prs printf(" ")
#define prn printf("\n")
#define scc(a) scanf("%c", &a)
#define scst(a) scanf("%s", a)
#define sci(a) scanf("%d", &a)
#define scll(a) scanf("%lld", &a)

#define prc(a) printf("%c", a)
#define prst(a) printf("%s", a)
#define pri(a) printf("%d", a)
#define prll(a) printf("%lld", a)

#define FOR(i, a, b) for(int i = a; i<=b; i++)
#define ROF(i, a, b) for(int i = a; i>=b; i--)
#define pria(i, a, b, A) FOR(i, a, b) {pri(A[i]);prs;}
#define prlla(i, a, b, A) FOR(i, a, b) {prll(A[i]);prs;}
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(__typeof((c).begin()) i = (c).begin(); i != c.end(); i++)

#define mp make_pair
#define pb push_back

inline ll max(ll a, ll b) {return (a<b)?b:a;}
inline ll min(ll a,ll b) {return (a<b)?a:b;}

char s[100005];
int l;
void change(int x, int y){
	if(x>l)
		return;
	else{
		FOR(i, x, y){
			if(s[i]=='a')
				s[i]='z';
			else
				s[i]-=1;
		}
	}
	return;
}

int main(){
	int i;
	scst(s);
	l = strlen(s);
	int x=l; int y=l;
	FOR(i, 0, l-1){
		if(s[i]=='a'){
			x = i;
			break;
		}
	}
	FOR(i, x+1, l-1){
		if(s[i]=='a'){
			y = i;
			break;
		}
	}
	//cout<<x<<" "<<y<<endl;
	if(x == l){ // no a
		//cout<<"here1";
		change(0, l-1);
	}
	else if(x!=l && y == l){ // one a
		//cout<<"here2";
		if(x==0)
			change(1, l-1);
		else
			change(0, x-1);
	}
	else if(x!=l && y!=l && y-x==1){ // two adjacent a
		//cout<<"here3";
		if(x==0)
			change(2, l-1);
		else
			change(0, x-1);
	}
	else{ // else
		//cout<<"here4";
		change(x+1, y-1);
	}
	prst(s);prn;
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<utility>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<int> vi;
typedef vector<vi> vvi;

#define prs printf(" ")
#define prn printf("\n")
#define scc(a) scanf("%c", &a)
#define scst(a) scanf("%s", a)
#define sci(a) scanf("%d", &a)
#define scll(a) scanf("%lld", &a)

#define prc(a) printf("%c", a)
#define prst(a) printf("%s", a)
#define pri(a) printf("%d", a)
#define prll(a) printf("%lld", a)

#define FOR(i, a, b) for(int i = a; i<=b; i++)
#define ROF(i, a, b) for(int i = a; i>=b; i--)
#define pria(i, a, b, A) FOR(i, a, b) {pri(A[i]);prs;}
#define prlla(i, a, b, A) FOR(i, a, b) {prll(A[i]);prs;}
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(__typeof((c).begin()) i = (c).begin(); i != c.end(); i++)

#define mp make_pair
#define pb push_back

inline ll max(ll a, ll b) {return (a<b)?b:a;}
inline ll min(ll a,ll b) {return (a<b)?a:b;}

char s[100005];
int l;
void change(int x, int y){
	if(x>=l || x>y || y >= l)
		return;
	else{
		FOR(i, x, y){
			if(s[i]=='a')
				s[i]='z';
			else
				s[i]-=1;
		}
	}
	return;
}

int main(){
	scst(s);
	l = strlen(s);
	bool fl=1;
	FOR(i, 0, l-1)
		if(s[i]!='a'){
			fl=0;
			break;
		}
		else
			fl=1;
	if(fl){
		s[l-1]='z';
		prst(s);prn;
		return 0;
	}

	vector<ll> v;
	int x=l,y=l, i;
	ll k;
	FOR(i, 0, l-1){
		if(s[i]=='a'){
			x=i;
			v.pb(i);
		}
	}
	if(v.size()==0){ // no a
		change(0, l-1);
	}
	else if(v.size()==1){ // one a
		if(x==0)
			change(1, l-1);
		else
			change(0, x-1);
	}
	else if(v[0] != 0){
		change(0, v[0]-1);
	}
	else{ // many adjacent a
		FOR(i, 1, v.size()-1){
			if(v[i]-v[i-1]>1){
				k=i;
				break;
			}
		}
		change(v[k-1]+1, v[k]-1);
	}
	prst(s);prn;
	return 0;
}