b = []
while True:
    try:
        a = input()
        b.append(a) #b存储所有的输入字符串,即待验证密码
    except:
        break
def repeat_check(i):#验证是否有长度大于等于三的重复子串
    b_1 = i#输入的所有的字符串的某一个,具体哪一个看调用这个函数的代码
    repeat = 0#重复值初始化为1
    len_b_1 = len(b_1)
    for windows in range(3,len_b_1):#窗口大小,只需要从3验证即可,最大的窗口为字符串长度 - 1 即可
        c = []
        for i in range(len_b_1 - windows - 1):#移动窗口收集字符串 !!!!!!!!!!!ps:其实这道题窗口为3即可,因为重复长度为4,5通过窗口为3都能验证出来
        我只是为了写一下改变窗口大小
            c.append(b_1[i:i+windows])#c中保存每次窗口包含的字符串
        if(len(c) != len(set(c))):#如果原始的c和通过set()去重的列表长度相同,则认为无重复,否则认为有重复字串
            repeat = 1
            break
    return repeat
for i in b:
    if(len(i) <= 8):#长度大于8则认为不合法
        print('NG')
        continue
    if(' ' in i):#输入有空格则认为不合法
        print('NG')
        continue
    repeat = repeat_check(i)#判断是否有长度大于等于3的重复子串
    if(repeat == 1):
        print('NG')
        continue
    upper = 0#初始化大写,小写,数字,其他字符统计量
    lower = 0
    number = 0
    other = 0
    for j in range(len(i)):
        if(i[j].isdigit()):#若是第一次遇见数字,则数字的统计加一
            if(number == 0):
                number = 1
        elif(i[j].islower()):#若是第一次遇见小写,则小写的统计加一
            if(lower == 0):
                lower = 1
        elif(i[j].isupper()):#若第一次遇见大写,则大写的统计加一
            if(upper == 0):
                upper = 1
        else:
            if(other == 0):#否则认为是其他字符
                other = 1
    if(upper + lower + number + other < 3):#若是只有上述四种的两种,则认为非法
        print('NG')
        continue
    print('OK')#经历了上述所有的检查之后走到这一步,没有非法项,则认为合法