var f:text;
ok:boolean;
m,n,i,j,sol:integer;
c:char;
a:array[1..1000,1..1000] of char;
b:array[1..1000,1..1000,'a'..'z'] of longint;
h:array['a'..'z'] of longint;
begin
sol:=0;
assign(f,'matrix.in');
reset(f);
readln(f,m,n);
for i:=1 to m do
begin
for j:=1 to m do read(f,a[i,j]);
readln(f);
end;
for i:=1 to n do
begin
for j:=1 to n do begin
read(f,c);
inc(h[c]);
end;
readln(f);
end;
close(f);
for i:=1 to n do
for j:=1 to n do inc(b[1,1,a[i,j]]);
ok:=true;
for c:='a' to 'z' do
if h[c]<>b[1,1,c] then
begin
ok:=false;
break;
end;
if ok then inc(sol);
for i:=1 to m-n do
begin
b[i+1,1]:=b[i,1];
for j:=1 to n do begin
dec(b[i+1,1,a[i,j]]);
inc(b[i+1,1,a[n+i,j]]);
end;
ok:=true;
for c:='a' to 'z' do
if h[c]<>b[i+1,1,c] then
begin
ok:=false;
break;
end;
if ok then inc(sol);
end;
for j:=1 to m-n do
begin
b[1,j+1]:=b[1,j];
for i:=1 to n do begin
dec(b[1,j+1,a[i,j]]);
inc(b[1,j+1,a[i,j+n]]);
end;
ok:=true;
for c:='a' to 'z' do
if h[c]<>b[1,j+1,c] then
begin
ok:=false;
break;
end;
if ok then inc(sol);
for i:=1 to m-n do
begin
for c:='a' to 'z' do b[i+1,j+1,c]:=b[i,j+1,c]+b[i+1,j,c]-b[i,j,c];
inc(b[i+1,j+1,a[i,j]]);
dec(b[i+1,j+1,a[i+n,j]]);
dec(b[i+1,j+1,a[i,j+n]]);
inc(b[i+1,j+1,a[i+n,j+n]]);
ok:=true;
for c:='a' to 'z' do
if h[c]<>b[1,j+1,c] then
begin
ok:=false;
break;
end;
if ok then inc(sol);
end;
end;
assign(f,'matrix.out');
rewrite(f);
writeln(f,sol);
close(f);
end.