#include <iostream>
#include <fstream>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

#define in cin
//ifstream in("2617.txt");

inline int red(double x) {
    return (int) (x + 0.5);
}

inline double red(double x, int dec) {
    double p = pow(10.0, dec);
    return (double) red(x * p) / p;
} 

/*inline int maxi(int a, int b) {
    return (a > b) ? a : b;
}*/

int main() {
    int l, x;
    while (in >> l && l != 0) {
        int imagen[l][l], escaneo[l][l];
        for (int i = 0; i < l; i++)
            for (int j = 0; j < l; j++) {
                in >> x;
                imagen[i][j] = x;
            }
        for (int i = 0; i < l; i++)
            for (int j = 0; j < l; j++) {
                in >> x;
                escaneo[i][j] = x;
            }

        int cant1 = 0, cant2 = 0, cant3 = 0, cant4 = 0, cant5 = 0, cant6 = 0, cant7 = 0, cant8 = 0;
        for (int i = 0; i < l; i++)
            for (int j = 0; j < l; j++) {
                if (abs(imagen[i][j] - escaneo[i][j]) <= 100)
                    cant1++;
                if (abs(imagen[i][j] - escaneo[j][i]) <= 100)
                    cant2++;
                if (abs(imagen[i][j] - escaneo[i][l-j-1]) <= 100)
                    cant3++;
                if (abs(imagen[i][j] - escaneo[l-j-1][i]) <= 100)
                    cant4++;
                if (abs(imagen[i][j] - escaneo[j][l-i-1]) <= 100)
                    cant5++;
                if (abs(imagen[i][j] - escaneo[l-i-1][j]) <= 100)
                    cant6++;
                if (abs(imagen[i][j] - escaneo[l-i-1][l-j-1]) <= 100)
                    cant7++;
                if (abs(imagen[i][j] - escaneo[l-j-1][l-i-1]) <= 100)
                    cant8++;
            }
        double maxCant = 100.0 / l / l * max(cant1, max(cant2, max(cant3, max(cant4, max(cant5, max(cant6, max(cant7, cant8)))))));
        printf("%.2f\n", red(maxCant, 2));
    }
    //getchar();
    return 0;
}

