import Foundation

let input = loadData(day: 2)

var valids = 0
var valid2 = 0

var scanner = Scanner(string: input)
while !scanner.isAtEnd {
    guard let min = scanner.scanInt(),
          scanner.scanString("-") != nil,
          let max = scanner.scanInt(),
          let character = scanner.scanCharacter(),
          scanner.scanString(":") != nil,
          let password = scanner.scanUpToCharacters(from: .newlines)
    else {
        fatalError("Invalid input");
    }


    let count = password.lazy.filter { $0 == character }.count

    if min <= count && count <= max {
        print("valid", min, max, character, password)
        valids += 1
    }

    let first = password.index(password.startIndex, offsetBy: min - 1, limitedBy: password.endIndex).map { password[$0] }
    let second = password.index(password.startIndex, offsetBy: max - 1, limitedBy: password.endIndex).map { password[$0] }

    if (first == character || second == character) && first != second {
        print("valid 2", password)
        valid2 += 1
    }

}

print("Valid old", valids)
print("Valid new", valid2)