/*
TASK:matrix
LANG:C++
*/
#include <iostream>
#define MAXN 1000
using namespace std;
int a[MAXN][MAXN];
bool possible[MAXN];
bool used[MAXN];
int x,y;
int M = 0;
int i,k;
void make();
bool rek(int);
int main()
{
    cin >> x >> y;
    for (i=0;i < x;i++)
    {
        possible[i] = true;
        for (int j=0;j < y;j++)
         cin >> a[i][j];
    }

    make();
    for (i=0;i < x;i++)
     if (possible[i]) 
      M++;
    
    cout << M;
    return 0;
}

void make()
{
     for (i=0;i < x;i++)
      if (possible[i])
       for (k=i+1;k < x;k++)
        {
                    for (int s=0;s < y;s++)
                     used[s] = false;
                    if (rek(0))
                     possible[k] = false;
        }
}
   
bool rek(int j)
{
        if (j == y) return true;
        bool s = false;
        for (int v=0;v < y;v++)
         if (!used[v])
          if (a[i][j] == a[k][v])
          {
             s = true;
             used[v] = true;
             break;
          }
        if (s) return rek(j+1);
        else return false;
        //used[j] = true;
        return rek(j+1);
}
