#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
const int N=1100;
const ll BASE1=131,BASE2=1331,MOD=1e9+7;
int n,m,qn,qm,q;
ll a[N][N],f[N][N],g[N][N],bs1[N]={1},bs2[N]={1},fq[N][N],gq[N][N],b[N][N];
bool flag[N];
char ch;
unordered_map<ll,bool> um;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>qn>>qm;
for(int i=1;i<=max(n,m);i++) bs1[i]=(bs1[i-1]*BASE1)%MOD,bs2[i]=(bs2[i-1]*BASE2)%MOD;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>ch;
a[i][j]=ch-'0'+1;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) f[i][j]=(((f[i][j-1]*BASE1)%MOD)+a[i][j])%MOD;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) g[i][j]=(((g[i-1][j]*BASE2)%MOD)+f[i][j])%MOD;
}
for(int i=qn;i<=n;i++)
{
for(int j=qm;j<=m;j++) um[(g[i][j]+MOD*3-((g[i-qn][j]*bs2[qn])%MOD)-((g[i][j-qm]*bs1[qm])%MOD)-((g[i-qn][j-qm]*bs1[qm]*bs2[qn])%MOD))%MOD]=true;
}
cin>>q;
while(q--)
{
for(int i=1;i<=qn;i++)
{
for(int j=1;j<=qm;j++)
{
cin>>ch;
b[i][j]=ch-'0'+1;
}
}
for(int i=1;i<=qn;i++)
{
for(int j=1;j<=qm;j++) fq[i][j]=(((fq[i][j-1]*BASE1)%MOD)+b[i][j])%MOD;
}
for(int i=1;i<=qn;i++)
{
for(int j=1;j<=qm;j++) gq[i][j]=(((gq[i-1][j]*BASE2)%MOD)+fq[i][j])%MOD;
}
um.count(gq[qn][qm])?cout<<"1\n":cout<<"0\n";
}
return 0;
}