using System; using System.Collections.Generic; class Solution { static void Main(String[] args) { int[,] square = new int[3, 3]; for (int j = 0; j < 3; j++) { int[] row = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse); for (int i = 0; i < 3; i++) { square[i, j] = row[i]; } } Console.WriteLine(CostToMakeMagical(square)); } static int CostToMakeMagical(int[,] square) { int minimumCost = -1; foreach (int[,] magicSquare in GenerateMagicSquares()) { int currentCost = 0; for (int j = 0; j < 3; j++) { for (int i = 0; i < 3; i++) { currentCost += Math.Abs(square[i, j] - magicSquare[i, j]); } } if (minimumCost == -1 || currentCost < minimumCost) { minimumCost = currentCost; } } return minimumCost; } static List GenerateMagicSquares() { List magicSquares = new List(); for (int i = 2; i <= 8; i += 2) { for (int j = 2; j <= 8; j += 2) { if (i == j || 15 - i - j == 5) continue; int[,] magicSquare = new int[3, 3]; magicSquare[0, 0] = i; magicSquare[1, 0] = 15 - i - j; magicSquare[2, 0] = j; magicSquare[1, 1] = 5; magicSquare[1, 2] = 10 - magicSquare[1, 0]; magicSquare[0, 2] = 10 - magicSquare[2, 0]; magicSquare[0, 1] = 15 - magicSquare[0, 0] - magicSquare[0, 2]; magicSquare[2, 2] = 10 - magicSquare[0, 0]; magicSquare[2, 1] = 10 - magicSquare[0, 1]; magicSquares.Add(magicSquare); } } return magicSquares; } }