#include #include #include #define rep(i, n) for (i = 0; i < n; i++) using namespace std; int n, m; int c[200][100][100]; int f(int a, int b) { int i, j, k; set dict; int ret = 114514; rep(i, n) { rep(j, n) { dict.clear(); rep(k, n) { dict.insert(c[a][i][k]); dict.insert(c[b][j][k]); } ret = min(ret, (int)dict.size()); } } rep(i, n) { rep(j, n) { dict.clear(); rep(k, n) { dict.insert(c[a][k][i]); dict.insert(c[b][k][j]); } ret = min(ret, (int)dict.size()); } } dict.clear(); rep(k, n) { dict.insert(c[a][k][k]); dict.insert(c[b][k][k]); } ret = min(ret, (int)dict.size()); dict.clear(); rep(k, n) { dict.insert(c[a][k][k]); dict.insert(c[b][k][n - 1 - k]); } ret = min(ret, (int)dict.size()); dict.clear(); rep(k, n) { dict.insert(c[a][k][n - 1 - k]); dict.insert(c[b][k][k]); } ret = min(ret, (int)dict.size()); dict.clear(); rep(k, n) { dict.insert(c[a][k][n - 1 - k]); dict.insert(c[b][k][n - 1 - k]); } ret = min(ret, (int)dict.size()); return ret; } int main() { int i, j, k; cin >> n >> m; rep(i, m) rep(j, n) rep(k, n) cin >> c[i][j][k]; int ans = 114514; for (i = 0; i < m; i++) for (j = i + 1; j < m; j++) ans = min(ans, f(i, j) - 1); cout << ans << endl; return 0; }