Pagini recente » Cod sursa (job #2759144) | Cod sursa (job #2483023) | Cod sursa (job #2111474) | Cod sursa (job #2284721) | Cod sursa (job #2205385)
#include <cstdio>
using namespace std;
char a[1002][1002];
int f[26];
int d[1002][1002],lit[1002][1002];
int main()
{
int n,m,i,j,k,nr,aux;
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
scanf("%d%d",&n,&m);
getchar();
for(i=1; i<=n; i++)
for(j=1; j<=n+1; j++)
a[i][j]=getchar();
for(i=1; i<=m; i++)
for(j=1; j<=m+1; j++)
{
int c=getchar();
if(j<m+1)
f[c-'a']++;
}
for(k=0; k<26; k++)
{
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
d[i][j]=d[i][j-1];
if(a[i][j]-'a'==k)
d[i][j]++;
}
for(j=1; j<=n; j++)
for(i=1; i<=n; i++)
d[i][j]+=d[i-1][j];
for(i=m; i<=n; i++)
for(j=m; j<=n; j++)
{
aux=d[i][j]+d[i-m][j-m]-d[i-m][j]-d[i][j-m];
if(aux==f[k])
lit[i][j]++;
}
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
d[i][j]=0;
}
nr=0;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(lit[i][j]==26)
nr++;
printf("%d",nr);
return 0;
}