#include<iostream>
#include<string>
using namespace std;
#define nm 1005
#define FOR(i,a,b)for(i=(a);i<=(b);++i)
char G[nm][nm],V[nm][nm],impos[nm][nm];
int cnt[26],T[nm][nm],N,M;
int main()
{
int i,j,l,ans=0;
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
scanf("%d %d\n",&N,&M);
FOR(i,0,N-1)
scanf("%s\n",&G[i]);
FOR(i,0,M-1)
scanf("%s\n",&V[i]);
FOR(i,0,M-1)
FOR(j,0,M-1)
++cnt[V[i][j]-'a'];
FOR(i,0,N-1)
FOR(j,0,M-2)
impos[i][j]=1;
FOR(i,0,M-2)
FOR(j,0,N-1)
impos[i][j]=1;
FOR(l,0,25)
{
char ch=l+'a';
FOR(i,0,N-1)
FOR(j,0,N-1)
{
T[i+1][j+1]=T[i+1][j]+T[i][j+1]-T[i][j];
if(G[i][j]==ch) T[i+1][j+1]++;
}
FOR(i,M-1,N-1)
FOR(j,M-1,N-1)
if(!impos[i][j])
if(cnt[l]!=(T[i+1][j+1]-T[i-M+1][j+1]-T[i+1][j-M+1]+T[i-M+1][j-M+1])) impos[i][j]=1;
}
FOR(i,0,N-1)
FOR(j,0,N-1)
if(!impos[i][j]) ++ans;
printf("%d",ans);
return 0;
}