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

using namespace __gnu_pbds;
using namespace std;

typedef tree<int, null_type, less<int>, rb_tree_tag,
        tree_order_statistics_node_update>
        new_data_set;


#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define PSET(x,y) fixed<<setprecision(y)<<x
#define pb push_back
#define pf push_front
#define mp make_pair
#define pii pair<int,int>
#define vi vector<int>
#define vip vector<pair<int,int> >
#define ff first
#define ss second
#define int long long
#define SIZE 200010
#define mod 1000003
#define BIG 998244353
#define s(t) scanf("%d",&t)
#define p(t) printf("%d\n",t)
#define mii map<int,int>
#define MSET(table,i) memset(table, i, sizeof(table))
#define INF 1e18
#define endl '\n'
#define tc int t;cin>>t;while(t--)
#define pi  3.1415926358
#define print(x) for(auto el: x) cout<<el<<" ";cout<<endl
#define bits(x) __builtin_popcount(x)
#define minimum(a,n) min_element(a,a+n)-a
#define maximum(a,n) max_element(a,a+n)-a
#define pqbig priority_queue<int>
#define pqsmall priority_queue<int,vector<int>,greater<int> >
#define all(v) v.begin(),v.end()

#define trace1(x)                cerr<<#x<<": "<<x<<endl
#define trace2(x, y)             cerr<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
#define trace3(x, y, z)          cerr<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
#define trace4(a, b, c, d)       cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
#define trace5(a, b, c, d, e)    cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
#define trace6(a, b, c, d, e, f) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl
#define sitr set<int>:: iterator
#define mitr map<int,int>:: iterator

int  max3(int  a, int  b, int c)
{
    return max(c, max(a, b));
}
int min3(int a, int  b, int  c)
{
    return min(a, min(b, c));
}
int  power(int  x, int  y )
{
    int res = 1;
    while (y > 0)
    {
        if (y & 1)
            res = (res * x);
        y = y >> 1;
        x = (x * x);
    }
    return res;
}
int  powermod(int  x, int  y, int p )
{
    int res = 1;
    while (y > 0)
    {
        if (y & 1)
            res = (res * x) % p;
        y = y >> 1;
        x = (x * x) % p;
    }
    return res % p;
}
int logg(int  a)
{
    int  x = 0;
    while (a > 1)
    {
        x++;
        a /= 2;
    }
    return x;
}
int  gcd(int  a, int   b)
{
    if (a == 0)
        return b;
    return gcd(b % a, a);
}
int ceiling (int  a, int  b)
{
    if (a % b == 0)
        return a / b;
    else
        return a / b + 1;
}
int modinv(int x)
{
    return powermod(x, mod - 2, mod);
}

void input(int *arr, int n)
{
    for (int i = 0; i < n; i++)
        cin >> arr[i];
}

bool isperfectsquare(int n)
{
    double x = sqrt(n);
    return ((x - floor(x)) == 0);
}

int sumofdigits(int n)
{
    int ans = 0;
    while (n)
        ans += n % 10, n /= 10;
    return ans;
}

int cntdigits(int n)
{
    int cnt = 0;
    while (n)
        cnt++, n /= 10;
    return cnt;
}
int prime[1000005];
void seive()
{
    int n = 1000000;
    for(int i=1;i<=1000000;i++)
        prime[i]=i;
    for (int i = 2; i <= n; i++)
        if (prime[i] == i)
            for (int j = 2 * i; j <= n; j += i)
                if(prime[j]==j)
                    prime[j]=i;
}


int32_t main()
{
    fast;
    string s;cin>>s;
    for(int i=1;i<4;i++)
    {
        if(s[i]==s[i-1])
        {
            cout<<"Bad";
            return 0;
        }
    }  
    cout<<"Good";
}

Measured memory_bytes: 256