object Solution { val nu = "0123456789".toCharArray.toSet val lo = "abcdefghijklmnopqrstuvwxyz" val up = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" val sp = "!@#$%^&*()-+".toCharArray.toSet def minimumNumber(n: Int, p: String): Int = { val arr = p.toCharArray val missing = 6 - n if(missing >= 4) return missing val digit = arr.exists(x => { nu.contains(x) }) val low = arr.exists(x => { x >= 'a' && x <= 'z' }) val high = arr.exists(x => { x >= 'A' && x <= 'Z' }) val special = arr.exists(x => { sp.contains(x) }) //println(s"$digit $low $high $special") val bad = Seq(digit, low, high, special).filter(_ == false).size Math.max(Math.max(missing, 0), bad) } def main(args: Array[String]) { val sc = new java.util.Scanner (System.in); var n = sc.nextInt(); var password = sc.next(); val answer = minimumNumber(n, password); println(answer) } }