#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 500;
const int MAXC = 30;
int D[MAXC + 5][MAXC + 5];
int c[MAXN + 5][MAXN + 5];
long long key[MAXC + 5][3];
int main() {
	int N, C;
	scanf("%d%d", &N, &C);
	for(int i=1;i<=C;i++)
		for(int j=1;j<=C;j++)
			scanf("%d", &D[i][j]);
	for(int i=1;i<=N;i++)
		for(int j=1;j<=N;j++)
			scanf("%d", &c[i][j]);
	for(int i=1;i<=C;i++)
		for(int j=1;j<=N;j++)
			for(int k=1;k<=N;k++)
				key[i][(j+k)%3] += 1ll * D[c[j][k]][i];
	long long ans = (1ll<<60);
	for(int i=1;i<=C;i++) {
		for(int j=1;j<=C;j++) {
			if( i == j ) continue;
			for(int k=1;k<=C;k++) {
				if( i == k || j == k ) continue;
				ans = min(ans, key[i][0] + key[j][1] + key[k][2]);
			}
		}
	}
	printf("%lld\n", ans);
}