#include <iostream> #include <ctype.h> #include <set> using namespace std; string ans(string s){ if(s.size()<=8) return "NG"; //cout << "!" << endl; int tag[4] = {0}; int flag = 0; for(const char &c:s){ if(isupper(c)) //? int ispunct(int c); <ctype.h> 返回非零值(true),否则返回 0(false) tag[0] = 1; if(islower(c)) tag[1] = 1; if(isdigit(c)) tag[2] = 1; if(ispunct(c)) tag[3] = 1; } for(const int &i:tag) //数组元素也可以这样操作 flag+=i; if(flag<3) return "NG"; //cout << "!!" << endl; set<string> str; //需要头文件 int size = s.size(); for(int i = 0;i<=size-3;i++){ string tem = s.substr(i, 3); if(str.find(tem)!=str.end()) return "NG"; else str.insert(tem); } return "OK"; } int main(){ string s; while(cin >> s){ cout << ans(s) << endl; //多用例注意输入输出 } }