#include #include #include #include #include using namespace std; int n; int grid[3][3]; const int oo = 1e9; bool check() { int sr = 0, sc = 0, sd1 = 0, sd2 = 0; int vis[10] = {0}; for(int i = 0 ; i < 3; i++) { if(vis[grid[i][0]] || vis[grid[i][1]] || vis[grid[i][2]]) return false; vis[grid[i][0]] = 1, vis[grid[i][1]] = 1, vis[grid[i][2]] = 1; if(i == 0) sr += grid[i][0] + grid[i][1] + grid[i][2]; else if(grid[i][0] + grid[i][1] + grid[i][2] != sr) return false; } for(int i = 0 ; i < 3; i++) if(i == 0) sc += grid[0][i] + grid[1][i] + grid[2][i]; else if(grid[0][i] + grid[1][i] + grid[2][i] != sc) return false; sd1 += grid[0][0] + grid[1][1] + grid[2][2]; sd2 += grid[0][2] + grid[1][1] + grid[2][0]; return sr == sc && sc == sd1 && sd1 == sd2; } int ans = oo; void solve(int i, int j, int vis[], int cost) { if(i == 3) { if(check()) ans = min(cost, ans); return; } for(int ind = 1; ind < 10; ind++) if(!vis[ind]) { int t = grid[i][j]; grid[i][j] = ind; vis[ind] = 1; if(j == 2) solve(i+1,0, vis, cost + abs(grid[i][j] - t)); else solve(i, j+1 ,vis, cost + abs(grid[i][j] - t)); grid[i][j] = t; vis[ind] = 0; } } int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ for(int i = 0 ; i < 3; i++) for(int j = 0; j < 3; j++) cin>>grid[i][j]; int vis[10] = {0}; solve(0, 0, vis, 0); cout<