package main import ( "bufio" "fmt" "os" "strings" ) func main() { reader := bufio.NewScanner(os.Stdin) for reader.Scan() { s := reader.Text() if valid(s) { fmt.Println("OK") } else { fmt.Println("NG") } } } func valid(s string) bool { // rule 1 if len(s) <= 8 { return false } // rule 2 counts := [4]int{0} for _, v := range s { if v >= 'a' && v <= 'z' { counts[0]++ } else if v>= 'A' && v<= 'Z' { counts[1]++ } else if v >= '0' && v<= '9' { counts[2]++ } else { counts[3]++ } } diffType := 0 for _,v := range counts { if v != 0 { diffType++ } } if diffType < 3 { return false } // rule 3 for i :=0; i < len(s)-2; i++ { str_count := strings.Count(s, s[i:i+3]) if str_count > 1 { return false } } return true }