import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.nextLine();
            if (isOk(str)) {
                System.out.println("OK");
            } else {
                System.out.println("NG");
            }
        }
    }

    public static boolean isChongfu(String str) {
        List<String> lst = new ArrayList<>();
        int length = str.length();
            for (int i = 0; i < length; i ++) {
                if (i + 3 > length) {
                    break;
                }
                lst.add(str.substring(i, i + 3));
            }
        int size = lst.size();
        int newSize = (int) lst.stream().distinct().count();

        return newSize != size;
    }
    
    public static boolean isOk(String str) {
        if (str.length() <= 8 || isChongfu(str)) {
            return false;
        }
        int count = 0;
        Pattern pattern1 = Pattern.compile("[a-z]");
        if (pattern1.matcher(str).find()) {
            count++;
        }
        Pattern pattern2 = Pattern.compile("[A-Z]");
        if (pattern2.matcher(str).find()) {
            count++;
        }
        Pattern pattern3 = Pattern.compile("[0-9]");
        if (pattern3.matcher(str).find()) {
            count++;
        }
        Pattern pattern4 = Pattern.compile("[^a-zA-Z0-9]");
        if (pattern4.matcher(str).find()) {
            count++;
        }
        return count >=3;
    }
}

1、长度超过8位,需要密码长度>8 2、三种以上不用类型的字符,用懒惰匹配来判断,只要包含三种就可以 3、不能有相同长度>2的子串,将所有长度为3的子串都找出来放到list中,然后去重在比较去重前后list的size是否相等,相等则无重复,不等则有重复