using System.Text.RegularExpressions; // string input = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))"; string input = File.ReadAllText("input.txt").ReplaceLineEndings(""); int total = 0; Regex valid = new Regex(@"mul\((?[0-9]+),(?[0-9]+)\)"); Regex dontandDo = new Regex(@"(don\'t\(\).*?do\(\))"); input = dontandDo.Replace(input, ""); int muls = valid.Count(input); List<(int x, int y)> multiplies = new(); foreach (Match match in valid.Matches(input)) { string x = match.Groups["x"].Value; string y = match.Groups["y"].Value; multiplies.Add((int.Parse(x), int.Parse(y))); } foreach ((int x, int y) in multiplies) { total += x * y; } Console.WriteLine($"muls: {muls}");