import Foundation func verifyIfPasswordIsStrong(_ lenght: Int, password: String) -> Int { var neccesaryFixes = 0 //It contains at least one lowercase English character. let alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] var containsLowerCaseLetter = false for letter in alphabet { containsLowerCaseLetter = password.range(of: letter) != nil if containsLowerCaseLetter { break } } let numbers = ["0","1","2","3","4","5","6","7","8","9"] var containsADigit = false for digit in numbers { containsADigit = password.range(of: digit) != nil if containsADigit { break } } //It contains at least one uppercase English character. var containsUpperCaseLetter = false for letter in alphabet { containsUpperCaseLetter = password.range(of: letter.uppercased()) != nil if containsUpperCaseLetter { break } } //It contains at least one special character. The special characters are: !@#$%^&*()-+ let specialCharacters = ["!", "@", "#","$","%","^","&","*","(",")","-","+"] var containsSpecialCharacter = false for letter in specialCharacters { containsSpecialCharacter = password.range(of: letter) != nil if containsSpecialCharacter { break } } neccesaryFixes += containsLowerCaseLetter ? 0 : 1 neccesaryFixes += containsUpperCaseLetter ? 0 : 1 neccesaryFixes += containsSpecialCharacter ? 0 : 1 neccesaryFixes += containsADigit ? 0 : 1 // check if it doesn't have 6 digits var charactersToMinimun = 0 if lenght < 6 { charactersToMinimun = (6 - lenght) } return neccesaryFixes < charactersToMinimun ? charactersToMinimun : neccesaryFixes } let firstEntry = Int(readLine()!) ?? 0 let secondEntry = readLine() ?? "" print(verifyIfPasswordIsStrong(firstEntry, password: secondEntry))