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