{
TASK: matrix
LANG: PASCAL
}
var
 z:array[1..10000,1..11]of integer;
 m,n,c,cc,a,ccc,cccc,c1:integer;
procedure cin;
{var
 b:string;
 d:byte;           }
begin
{ str(a,b);
 d:=length(b);
 for ccc:=1 to d do begin
                     if ord(b[d+1-ccc])-48>0  then inc(z[c][ord(b[d+1-ccc])-48])
                                              else inc(z[c][10]);
                     inc(z[c][11]);
                    end;               }
 while a>=10 do begin
                if a mod 10<>0 then inc(z[c][a mod 10])
                               else inc(z[c][10]);
                inc(z[c][11]);
                a:=a div 10;
               end;
 inc(z[c][a]);
 inc(z[c][11]);
end;
procedure check(c:integer);
var
 u:boolean;
begin
 u:=true;
 for cc:=c+1 to n do if z[cc][11]=z[c][11]then begin
                                                for cccc:=1 to 10 do if z[c][cccc]<>z[cc][cccc] then begin u:=false; break; end;
                                                if u=true then exit;
                                               end;
 inc(ccc);
end;
begin
 readln(n,m);
 for c:=1 to n do for cc:=1 to m do begin read(a); cin; end;
{ for c:=1 to n do begin
                   for cc:=1 to 11 do write(z[c][cc],' ');
                   writeln;
                  end; }
 ccc:=0;
 for c:=1 to n-1 do check(c);
 writeln(ccc+1);
end.
