import Foundation let input = loadData(day: 25).lines().compactMap(Int.init) func loop(subject: Int, times: Int) -> Int { var value = 1 for _ in 0.. Int { var value = 1 for i in 0...Int.max { if value == expected { return i } value = (value * subject) % 20201227 } return -1 } let sizes = input.map { findLoopSize(subject: 7, expected: $0) } print(sizes) let (pub1, pub2) = (input[0], input[1]) let (loop1, loop2) = (sizes[0], sizes[1]) let secret1 = loop(subject: pub2, times: loop1) let secret2 = loop(subject: pub1, times: loop2) print(secret1, secret2)