#include <cstdio>

typedef long long lint;

lint m[2019][2019];

bool findRect(lint n, lint l)
{
    lint i=0, j=0;
    do
    {
        if(m[0][0] == l) break;
        if(i<n-1)
        {
            i++;
        }
        else if(j<n-1)
        {
            i=0;
            j++;
        }
        else
        {
            return false;
        }
    }
    while(m[i][j] != l);
    lint i0=i, j0=j;
    lint i1=i;
    while(m[i][j] == l)
    {
        if(i < n-1)
        {
            if(i>i1 && j == j0) i1 = i;
            if(m[i+1][j] == l)
            {
                if(i <= i1)
                {
                    i++;
                    continue;
                }
                return false;
            }
        }
        if(j < n-1 && m[i][j+1] == l)
        {
            j++;
            i=i0;
        }
        else break;
    }
    lint s = (j-j0+1)*(i1-i0+1);
    lint c=0;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(m[i][j] == l) c++;
            if(c>s)
            {
                return false;
            }
        }
    }
    return true;
}

int main()
{
    lint n, k;
    scanf("%lld%lld", &n, &k);
    for(lint i=0; i<n; i++)
    {
        for(lint j=0; j<n; j++)
        {
            scanf("%lld", &m[i][j]);
        }
    }
    lint c=0;
    for(lint i=0; i<k; i++)
    {
        if(findRect(n, i)) c++;
    }
    printf("%lld", c);
    return 0;
}