/*
TASK:matrix
LANG:C++
*/
#include <iostream>
#include <algorithm>
using namespace std;

int masivec[1001][1001],n,m,i,j,used[1001],k,flag,cnt=0;

int main(){
    cin>>n>>m;
    for(i=1;i<=n;i++){
                     for(j=1;j<=m;j++) cin>>masivec[i][j];
                     sort(masivec[i]+1,masivec[i]+j);
    }
    for(i=1;i<n;i++){
                     if(used[i]!=0) continue;
                     flag=0;
                     for(j=i+1;j<=n;j++){
                                       for(k=1;masivec[i][k]==masivec[j][k]&&k<=m;k++);
                                       if(k==m+1){
                                                  if(flag==0){
                                                               cnt++;
                                                               flag=1;
                                                  }
                                                  used[i]=cnt;
                                                  used[j]=cnt;
                                       }
                     }
    }
    cout<<cnt+1<<"\n";
    return 0;
}
