def jg(pwd):
count=[0,0,0,0,0,0] #为了方便,我把所有条件初始值全部写在一个列表里
if len(pwd)>8: #判断第一条要求
count[0]=1
for i in pwd: #这一步主要判断第二条要求
if i.isdigit():
count[1]=1
elif i.isupper():
count[2]=1
elif i.islower():
count[3]=1
else:
count[4]=1
for i in range(len(pwd)-2): #判断是否有长度大于2的重复子串,-2是因为3个一组的话只用循环n-2次就可以,本来是有4、5、6重复子串的可能的,但那种条件下3个也必然重复,故而只判断最小可能3
a=pwd[i:i+3]
if a in pwd[i+3:]:
count[5]=0
break
else:
count[5]=1
if sum(count[1:5])>=3 and count[0]==1 and count[5]==1: #最后三个条件并列判断
print("OK")
else:
print("NG")
if __name__=="__main__":
while True:
try:
jg(input())
except:
break