/*
TASK:Matrix
LANG:C++
*/
#include <iostream>

using namespace std;
int mtr[1000][1000];
int maxbr=0;
bool check(int,int,int);
int main()
{
    int n;
    cin>>n;
    int m;
    cin>>m;
    
    for (int i=0;i<n;i++)
     for (int j=0;j<m;j++)
      cin>>mtr[i][j];
   
   bool used[1000];
   for (int i=0;i<n;i++)
    used[i]=0;
    
   int br=0;   
   for (int i=0;i<m-1;i++) if(!used[i])
    for (int j=i+1;j<m;j++)
     if(check(i,j,m) && !used[j]) {br++;used[j]=1;}
     
  cout<<n-br-1;
  
}
      
bool check(int k,int l,int m)
{   
    int usedk[1000],usedl[1000];
    for (int i=0;i<m;i++)
    {
        usedk[i]=0;
        usedl[i]=0;
    }
    
    for (int i=0;i<m;i++)
     for (int j=0;j<m;j++)
       if (mtr[k][i]==mtr[l][j] && !usedl[j])
       {
             usedk[i]=1;
             usedl[j]=1;
             j=m;
       }
    
    for (int i=0;i<m;i++)
     if (!usedk[i]) return false;
    
    return true;
}

