#include <bits/stdc++.h>
using namespace std;
//
#define For(i,a,b)     for (int i=(a),_b=(b); i<_b; i++)
#define RFor(i,b,a)    for (int i=(b)-1,_a=(a); i>=_a; i--)
#define foreach(i, c)   for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define ll long long int

//
template<class T> inline bool isPrimeNumber(T n)//NOTES:isPrimeNumber(
{
    if (n <= 1)return false;
    for (T i = 2; i * i <= n; i++) if (n % i == 0) return false;
    return true;
}
template<class T> inline T gcd(T a, T b)//NOTES:gcd(
{
    if (a < 0)return gcd(-a, b);
    if (b < 0)return gcd(a, -b);
    return (b == 0) ? a : gcd(b, a % b);
}
//
vector<long long int> SieveOfEratosthenes(long long int n)
{
    vector<bool>prime(n+1,1);

    //memset(prime, true, sizeof(prime));

    for (long long int p=2; p*p<=n; p++)
    {
        if (prime[p] == true)
        {
            for (long long int i=p*p; i<=n; i += p)
                prime[i] = false;
        }
    }
    vector<long long int>x(n,0);
    int o=0;
    int cnt=0;
    for (long long int p=2; p<=n; p++)
       if (prime[p])
          x[o++]=p;
          else
            cnt++;

    for(int i=0;i<=cnt;i++){
        x.pop_back();
    }

    x.shrink_to_fit();

    return x;
}

 long long binpow(long long a, long long b) {
    if (b == 0)
        return 1;
    long long res = binpow(a, b / 2);
    if (b % 2)
        return res * res * a;
    else
        return res * res;
}
long long int p=1000000007;
long long int fac(long long int n) {
   long long  int res = 1;
    while (n > 1) {
        res = (res * ((n/p) % 2 ?  p-1 : 1)) % p;
        for (long long int i = 2; i <= n%p; ++i)
            res = (res * i) % p;
        n /= p;
    }
    return res % p;
}

template <class t>
class dat{
public:
    t sum(t n,t n2){
        return n+n2;
    }
private:
    t da;
};
long long int a(long long int n){
    if(n<3){
        return n+1;
    }
    return a(n-1)+a(n-2)+a(n-3);
}
int binarySearch(int arr[], int l, int r, int x)
{
    if (r >= l) {
        int mid = l + (r - l) / 2;
        if (arr[mid] == x)
            return mid;
        if (arr[mid] > x)
            return binarySearch(arr, l, mid - 1, x);
        return binarySearch(arr, mid + 1, r, x);
    }
    return -1;
}
vector<int> rabin_karp(string const& s, string const& t) {
    const int p = 31;
    const int m = 1e9 + 9;
    int S = s.size(), T = t.size();

    vector<long long> p_pow(max(S, T));
    p_pow[0] = 1;
    for (int i = 1; i < (int)p_pow.size(); i++)
        p_pow[i] = (p_pow[i-1] * p) % m;

    vector<long long> h(T + 1, 0);
    for (int i = 0; i < T; i++)
        h[i+1] = (h[i] + (t[i] - 'a' + 1) * p_pow[i]) % m;
    long long h_s = 0;
    for (int i = 0; i < S; i++)
        h_s = (h_s + (s[i] - 'a' + 1) * p_pow[i]) % m;

    vector<int> occurences;
    for (int i = 0; i + S - 1 < T; i++) {
        long long cur_h = (h[i+S] + m - h[i]) % m;
        if (cur_h == h_s * p_pow[i] % m)
            occurences.push_back(i);
    }
    return occurences;
}
vector<int> count_primes(int n) {
    const int S = 10000;

    vector<int> primes,o;
    int nsqrt = sqrt(n);
    vector<char> is_prime(nsqrt + 1, true);
    for (int i = 2; i <= nsqrt; i++) {
        if (is_prime[i]) {
            primes.push_back(i);
            for (int j = i * i; j <= nsqrt; j += i)
                is_prime[j] = false;
        }
    }

    int result = 0;
    vector<char> block(S);
    for (int k = 0; k * S <= n; k++) {
        fill(block.begin(), block.end(), true);
        int start = k * S;
        for (int p : primes) {
            int start_idx = (start + p - 1) / p;
            int j = max(start_idx, p) * p - start;
            for (; j < S; j += p)
                block[j] = false;
        }
        if (k == 0)
            block[0] = block[1] = false;
        for (int i = 0; i < S && start + i <= n; i++) {
            if (block[i])
                o.push_back(i);
        }
    }
    return o;
}
int main() {
    cin.tie(0);
    cin.sync_with_stdio(0);
    char x;
    cin>>x;
    cout<<(char)(x+1)<<endl;



   /* cout<<fac(x)%mod<<endl;
    cout<<tgamma(x)<<endl;*/
    /*long long int ans=0, n, com,v;
    p=1000000007;
    cin>>n;
    n*=2;
    n-=2;
    com=n/2;
    v=(fac(com)%p);
    ans+=fac(n)/((v*v)%p);

    for(int i=1;com;i++){
        --n; --com;
        v=(fac(com)%p);
        ans+=fac(n)/((v*v*(fac(i)%p))%p);
    }
    cout<<ans;*/
    return 0;
}





Measured memory_bytes: 256