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是否相等,相等则无重复,不等则有重复