#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int n,k;
    cin >> n >> k;
    vector<vector<int>> m (n, vector<int>(n,0));
    vector<int> mini(k,n);
    vector<int> minj(k,n);
    vector<int> maxi(k,0);
    vector<int> maxj(k,0);
    vector<int> brd(k+1,0);
   // vector<int> povoljan(k+1,0);
    int povoljan = 0;
    for (int i=0; i<n; i++)
     {
         for (int j=0; j<n; j++)
           {
               int d;
                cin >> d;
                brd[d]++;
                 m[i][j]==d;
                    if(i<mini[d])
                        mini[d]=i;
                    if(i>maxi[d])
                        maxi[d]=i;
                    if(j<minj[d])
                        minj[d]=j;
                    if(j>maxj[d])
                        maxj[d]=j;

           }

     }

   // for(int i=1; i<=k; i++)
   //     cout << brd[i] << endl;
    for (int d=1; d<=k; d++)
    {
//        if(brd[d]==0)
//            continue;
//        if(brd[d]==1)
//        {
//            povoljan++;
//            continue;
//        }
//        int mini=n, minj=n, maxi=0, maxj=0;
//        for (int i=0; i<n; i++)
//            for (int j=0; j<n; j++)
//               {
//                    if(m[i][j]==d)
//                       {
//                           if(i<mini)
//                            mini=i;
//                           if(i>maxi)
//                            maxi=i;
//                           if(j<minj)
//                            minj=j;
//                           if(j>maxj)
//                            maxj=j;
//                       }
//
//               }
        //cout << mini << '-'<< maxi << ';' << minj << '-' << maxj <<  endl;
        if((maxi[d]-mini[d]+1)*(maxj[d]-minj[d]+1)==brd[d])
            povoljan++;
    }
    cout << povoljan;

    return 0;
}