var lines = File.ReadAllLines("input.txt"); var parts = lines.Select(line => (line.Split(" ")[0], line.Split(" ")[1])).ToList(); var list1 = parts.Select(part => int.Parse(part.Item1)).Order().ToList(); var list2 = parts.Select(part => int.Parse(part.Item2)).Order().ToList(); int distance = 0, similarityScore = 0; for (var i = 0; i < list1.Count; i++) { distance += Math.Abs(list1[i] - list2[i]); similarityScore += list1[i] * list2.Count(item => item == list1[i]); } Console.WriteLine($"Part 1 : {distance}\nPart 2 : {similarityScore}");