//思路:
//要求3可以依次截取3个字符,然后从后往前查找截取的子串
//如果找到的位置不等于开始截取的位置,则说明有重复子串
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
if(str.size()<9)//要求一
{
cout<<"NG"<<endl;
continue;
}
int flag1=0,flag2=0,flag3=0,flag4=0,num=0;//要求2满足标记以及种类个数
for(auto x:str)//判断要求2
{
if(x>='a'&&x<='z') flag1=1;
else if(x>='A'&&x<='Z') flag2=1;
else if(x>='0'&&x<='9') flag3=1;
else flag4=1;
}
num=flag1+flag2+flag3+flag4;//要求2满足种类个数
if(num<3)
{
cout<<"NG"<<endl;
continue;
}
int i=0;
for(i=0;i<str.size()-3;i++)//判断要求3
{
string tmps=str.substr(i,3);//截取3个字符
if(str.rfind(tmps)>i)//从后往前查找子串,如果位置不是i说明有多个
{
cout<<"NG"<<endl;
break;
}
}
if(i<str.size()-3) continue;
cout<<"OK"<<endl;//前面都满足,就可以ok了
}
}