{
TASK: matrix
LANG: PASCAL
}
program Matrix;
const NMax=1000;
type red=array[1..NMax] of integer;
var Matr:array[1..NMax] of red;
    N,M:integer;
    i,j, Br:integer;
procedure QuickSort(var a:red;Lo,Hi:integer);
  procedure Sort(l,r:integer);
    var i,j,x,y:integer;
    begin
      i:=l;j:=r;x:=a[(l+r) div 2];
      repeat
        while a[i]<x do i:=i+1;
        while x<a[j] do j:=j-1;
        if i<=j then
          begin
            y:=a[i];a[i]:=a[j];a[j]:=y;
            i:=i+1;j:=j-1
          end;
      until i>j;
      if l<j then Sort(l,j);
      if i<r then Sort(i,r);
    end;
  begin (* QuickSort *)
    Sort(Lo,Hi)
  end;
function MasSrav(var a,b:red;k:integer):integer;
  (* sravniava dva masiva ot celi chisla leksikograficheski i vrashta *)
  (* 0 - ako sa ravni; 1 - ako a<b; 2 - ako a>b *)
  var i,x:integer;
    begin
      x:=0;
      for i:=1 to k do
        if a[i]>b[i] then
          begin
            x:=2;
            break
          end
        else
          if a[i]<b[i] then
            begin
              x:=1;
              break
            end;
      MasSrav:=x
end;
procedure MasRazm(var a,b:red; k:integer);
    var i,x:integer;
    begin
      for i:=1 to k do
        begin
          x:=a[i];a[i]:=b[i];b[i]:=x
        end
      end;
procedure LinesQuickSort(Lo, Hi:integer);
  procedure LinesSort(l,r:integer);
    var i,j:integer;
        x,y:red;
    begin
      i:=l;j:=r;x:=Matr[(i+j) div 2];
      repeat
        while (MasSrav(Matr[i],x,M)=1) do i:=i+1;
        while (MasSrav(x,Matr[j],M)=1) do j:=j-1;
        if i<=j then
          begin
            MasRazm(Matr[i],Matr[j],M);
            i:=i+1;j:=j-1;
          end;
      until i>j;
      if l<j then LinesSort(l,j);
      if i<r then LinesSort(i,r);
    end;
  begin
    LinesSort(Lo,Hi)
  end;
begin
  readln(N,M);
  for i:=1 to N do
    begin
      for j:=1 to M-1 do
        read(Matr[i,j]);
      readln(Matr[i,M]);
    end;
  (* sortirat se vsichki redove pootdelno *)
  for i:=1 to N do QuickSort(Matr[i],1,M);
  (* sortirat se leksikograficheski redovete na matricata *)
  LinesQuickSort(1,N);
  (* Minava se edin pat po redovete sravniavajki vseki dva sasedni i *)
  (* broejki promenite *)
  Br:=1;
  for i:=1 to (N-1) do
    if MasSrav(Matr[i],Matr[i+1],M)=1 then Br:=Br+1;
  writeln(Br);
end.