#include<iostream>
#include <set>
using namespace std;

// 判断密码的长度
bool check1(string &password){
    bool bisValid = true;
    if(password.length() < 9){
        bisValid = false;
    }
    return bisValid;
}

//判断密码包含的字符类型
bool check2(string &password){
    bool bisValid = true;
    int type[4] = {0};
    int len = password.length();
    for(int i = 0; i < len; i++){
        if(password[i] >= 'a' && password[i] <= 'z'){
            type[0] = 1;
        }else if(password[i] >= 'A' && password[i] <= 'Z'){
            type[1] = 1;
        }else if(password[i] >= '0' && password[i] <= '9'){
            type[2] = 1;
        }else{
            type[3] = 1;
        }
    }

    if(type[0] + type[1] + type[2] + type[3] < 3){
        bisValid = false;
    }
    return bisValid;
}

// 检查是否有长度大于2的包含公共元素的子串重复 
bool check3(string &password){
    bool bisValid = true;
    set<string> myset;
    int len = password.length();
    string substr;
    for(int i = 0; i < len - 2; i++){
        substr = password.substr(i, 3);
        if(myset.find(substr) != myset.end()){
            bisValid = false;
            break;
        }
        myset.insert(substr);
    }

    return bisValid;
}

int main(){
    string password;

    while(getline(cin, password)){
        if(check1(password) && check2(password) && check3(password)){
            cout << "OK" << endl;
        }else{
            cout << "NG" << endl;
        }
    }
    return 0;
}