using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zadatak_2
{
    class Program
    {
        static void Main(string[] args)
        {
            char f = Convert.ToChar(" ");
            string deli = Console.ReadLine();
            int n = 0, k = 0;
            string[] names = deli.Split(f);
            int i = 0;
            foreach(string x in names)
            {
                if (i == 0)
                {
                    n = Convert.ToInt32(x);
                    i++;
                }
                else
                    k = Convert.ToInt32(x);
            }
            if(n<0||k<0)
                Environment.Exit(0);
            int[,] niz = new int[n, n];
            int j = 0;
            i = 0;
            for (j = 0; j < n; j++)
            {
                string br = Console.ReadLine();
                string[] brojevi = br.Split(f);
                foreach (string x in brojevi)
                {
                    niz[j, i] = Convert.ToInt32(x);
                    if(niz[j,i]>k)
                        Environment.Exit(0);
                    i = i + 1;
                    if (i == n)
                    {
                        i = 0;
                        break;
                    }
                }
            }
            int pravougaonik=0;
            int[] broj = new int[k];
            int[] broj1 = new int[k];
            for (int p=0;p<k;p++)
            {
                broj[p] = 0;
            }
            for (int p = 0; p < k; p++)
            {
                broj1[p] = 0;
            }
            for (int p=0;p<k;p++)
            for (j=0;j<n;j++)
            {
                for (i = 0; i < n; i++)
                {
                        if (p == niz[j, i])
                            broj[p]++;
                }
            }
            for (int p = 0; p < k; p++)
            {
                int q = 0;
                int t = 0;
                int prvi=0;
                for (j = 0; j < n; j++)
                {
                    if(j>0&&p==niz[j,prvi]&&p!=niz[j-1,prvi])
                    {
                        break;
                    }
                    if (j > 0 && p == niz[j, prvi] && p == niz[j - 1, prvi])
                    {
                        t = 1;
                    }
                    for (i = prvi; i < n; i++)
                    {
                        if (p == niz[j, i] && q == 0)
                        {
                            broj1[p]++;
                            prvi = i;
                            q = 1;
                        }
                        else if(q == 1 && i>0 && p==niz[j,i] && p==niz[j,i-1])
                        {
                            broj1[p]++;
                        }
                        else if(q == 1 && t == 0&& i > 0 && p == niz[j, i] && p != niz[j, i - 1])
                        {
                            break;
                        }
                        else if (q == 1 && t == 1 && i > 0 && p == niz[j, i])
                        {
                            t = 2;
                            broj1[p]++;
                        }
                        else if (q == 1 && t == 2 && i > 0 && p == niz[j, i] && p != niz[j, i - 1])
                        {
                            broj1[p]++;
                        }

                    }
                }
            }
            for (int p = 0; p < k; p++)
            {
                if (broj[p] == broj1[p] && broj[p]!=0)
                {
                    pravougaonik++;
                }
            }
            Console.WriteLine(pravougaonik);
        }
    }
}