#include #include #include #include #include using namespace std; /* int isMagic(int mat[3][3]){ // Check if all numbers are distinct int magic = 1; int nums[9] = {0,0,0,0,0,0,0,0,0}; for (int i=0; i< 3; i++){ for (int j=0; j< 3; j++){ if (nums[mat[i][j]] == 0) { nums[mat[i][j]] = 1; }else if (nums[mat[i][j]] == 1){ return 0; } } } return 1; }*/ int diffMats(int a[3][3], int b[3][3]){ int sum = 0; for (int i=0; i< 3; i++){ for (int j=0; j< 3; j++){ sum += abs(a[i][j]-b[i][j]); } } return sum; } int findRotation(int mat[3][3]){ int can1[3][3] = {{2, 7, 6},{9,5,1},{4,3,8}}; int can2[3][3] = {{4,3,8},{9,5,1},{2, 7, 6}}; int can3[3][3] = {{6, 7, 2},{1,5,9},{8,3,4}}; int can4[3][3] = {{8, 1, 6},{3,5,7},{4,9,2}}; int can5[3][3] = {{4, 9, 2},{3,5,7},{8,1,6}}; int can6[3][3] = {{8, 3, 4},{1,5,9},{6,7,2}}; int can7[3][3] = {{6, 1, 8},{7,5,3},{2,9,4}}; int can8[3][3] = {{2, 9, 4},{7,5,3},{6,1,8}}; int cost[8]; cost[0] = diffMats(can1,mat); cost[1] = diffMats(can2,mat); cost[2] = diffMats(can3,mat); cost[3] = diffMats(can4,mat); cost[4] = diffMats(can5,mat); cost[5] = diffMats(can6,mat); cost[6] = diffMats(can7,mat); cost[7] = diffMats(can8,mat); return *min_element(cost,cost+8); } int main() { int mat[3][3]; cin >> mat[0][0]; cin >> mat[0][1]; cin >> mat[0][2]; cin >> mat[1][0]; cin >> mat[1][1]; cin >> mat[1][2]; cin >> mat[2][0]; cin >> mat[2][1]; cin >> mat[2][2]; cout << findRotation(mat) << endl; return 0; }