#include <stdio.h>

int main(){
    int a[20][20], n, k;
    scanf("%d%d",&n,&k);
    int pronadjeni[k], ponovljeni[k];
    for(int i = 0; i<k; i++){
        pronadjeni[i] = 0;
        ponovljeni[i] = 0;
    }

    for(int i = 0; i<n; i++){
        for(int j = 0; j<n; j++){
            scanf("%d",&a[i][j]);
            pronadjeni[a[i][j]-1] = 1;
            ponovljeni[a[i][j]]++;
        }
    }
    int brProl = 0, traz = 1, prvoI = 0, prvoJ = 0, izlaz = 0,br_ponavljanja = 0;
    int prethodno_ponavljanje, visina, br_pravougaonika = 0;
    int poslednjeI;
    int poslednjeJ;

    while(brProl < k){
        izlaz = 0;
        prvoI = 0;
        prvoJ = 0;
        br_ponavljanja = 0;
        prethodno_ponavljanje = 0;
        int ind = traz - 1;
        visina = 0;
        if(pronadjeni[ind] == 1){
            for(int i = 0; i<n; i++){
                for(int j = 0; j<n; j++){
                    if(a[i][j] == traz){
                        prvoI = i;
                        prvoJ = j;
                        izlaz = 1;
                        break;
                    }
                }
                if(izlaz == 1)
                    break;
            }

            for(int i = prvoJ; i<n; i++){
                if(a[prvoI][i] == traz)
                    prethodno_ponavljanje++;
                else {
                    poslednjeI = prvoI;
                    poslednjeJ = i;
                    break;
                    }
            
            }

            for(int i = prvoI; i<n; i++){
                br_ponavljanja = 0;
                for(int j = prvoJ; j<n; j++){
                    if(a[i][j] == traz)
                        br_ponavljanja++;
                        else{
                            break;
                        }
                }
                if(prethodno_ponavljanje == br_ponavljanja){
                    visina++;
                    prethodno_ponavljanje = br_ponavljanja;                
                }
                else{
                    break;
                    }

            }
            if(visina != prethodno_ponavljanje || (visina == 1 && prethodno_ponavljanje == 1) && ponovljeni[traz-1] == 1){
                br_pravougaonika++;
                pronadjeni[traz-1]++;
            }
            izlaz = 0;
        }
        traz++;
        brProl++;
    }
    printf("%d\n",br_pravougaonika);
    return 0;
}