#include <iostream>

using namespace std;

int mat[2001][2001];
int n;
bool posecenost[2001][2001];

bool checkIfRec(int x, int y, int k){
    int z=x;
    while(mat[z][y]==k){
        posecenost[z][y]=true;
        ++z;
    }
    --z;
    ++y;
    while (y<n && mat[x][y]==k){
        int p=x;
        while (mat[p][y]==k){
            posecenost[p][y]=true;
            ++p;
        }
        p--;
        if (p!=z)
            return false;
        ++y;
    }
    return true;
}

int main()
{
    int k;
    int br=0;
    cin >> n >> k;
    for (int i=0; i<n; ++i)
        for (int j=0; j<n; ++j)
        cin >> mat[i][j];
    for (int i=1; i<=k; ++i){
        int ns1=0, ns2=0;
        bool p=false;
        bool x=false, y=false;
        for (int t=0; t<n; ++t){
            for (int j=0; j<n; ++j){
            if (mat[t][j]==i && !posecenost[t][j]){
                if (!checkIfRec(t, j, i)){
                    x=true;
                    break;
                }
                 else{
                    if (p){
                        p=false;
                        y=true;
                        break;
                    }
                    p=true;
                 }
            }
            }

            if (x || y)
                break;
        }
        if (p){
            ++br;
        }
    }
    cout << br;
    return 0;
}