import Foundation typealias Color = Character func readInput(_ filePath: String) throws -> ([[Color]], [[Color]]) { let content = try String(contentsOfFile: filePath, encoding: .ascii) let lines = content.split(separator: "\n") let towels = lines[0].split(separator: ", ").map(Array.init) let patterns = lines[1.. Bool { if let cached = cache[pattern] { return cached } for towel in towels { if pattern.starts(with: towel) { if canMatch(Array(pattern[towel.count..