protected override int Part2(string[] input) { var intcode = input[0]; var(map, _) = BuildMapAndFindOxygen(intcode); var minutes = 0; while (map.AllPoints(val => val == MapSpace).Count() > 0) { foreach (var p in map.AllPoints(val => val == MapOxygen).ToList()) { foreach (var d in AllDirections()) { var neighboor = MoveGenerator.MoveFrom(p, d); if (map[neighboor] == MapSpace) { map[neighboor] = MapOxygen; } } } minutes++; } return(minutes); }