#include "bits/stdc++.h"

using namespace std;

int N,M,K,L,R,H,W;

const long long int MOD=1000000007;

vector<int>Rand(100000);

long long int Hash(int a,int deg,int prev,vector<vector<int>>&edge){
	vector<int>in;
	long long int  out=1;
	for(auto i:edge[a]){
		if(i!=prev){
			(out*=(Rand[deg]+Hash(i,deg+1,a,edge))%MOD)%=MOD;
		}
	}
	return out;
}

int main(){
	
	random_device rnd;
	for(int i=0;i<100000;i++){
		Rand[i]=rnd()%MOD;
	}
	
	int blackdiry[]={1,1,1,0,-1,-1,-1,0};
	int blackdirx[]={-1,0,1,1,1,0,-1,-1};
	int whitediry[]={0,1,0,-1};
	int whitedirx[]={1,0,-1,0};
	
	
	//int H,W;
	while(cin>>H>>W,H){
		vector<string>s(H+2,string(W+2,'.'));
		for(int i=1;i<=H;i++){
			string t;
			cin>>t;
			s[i]='.'+t+'.';
		}
		vector<vector<pair<int,int>>>parent(H+2,vector<pair<int,int>>(W+2,{MOD,MOD}));
		for(int i=0;i<H+2;i++){
			for(int j=0;j<W+2;j++){
				if(parent[i][j].first!=MOD)continue;
				parent[i][j]={i,j};
				queue<pair<int,int>>Q;
				Q.push({i,j});
				while(!Q.empty()){
					int cy=Q.front().first;
					int cx=Q.front().second;
					Q.pop();
					if(s[i][j]=='#'){
						for(int k=0;k<8;k++){
							int ny=cy+blackdiry[k];							
							int nx=cx+blackdirx[k];							
							if(ny<0||nx<0||ny>=H+2||nx>=W+2)continue;
							if(s[ny][nx]=='.')continue;
							if(parent[ny][nx]==make_pair(i,j))continue;
							parent[ny][nx]={i,j};
							Q.push({ny,nx});
						}
					}
					else{
						for(int k=0;k<4;k++){
							int ny=cy+whitediry[k];							
							int nx=cx+whitedirx[k];							
							if(ny<0||nx<0||ny>=H+2||nx>=W+2)continue;
							if(s[ny][nx]=='#')continue;
							if(parent[ny][nx]==make_pair(i,j))continue;
							parent[ny][nx]={i,j};
							Q.push({ny,nx});
						}
					}
				}
			}
		}
		int h,w;
		cin>>h>>w;
		vector<string>ss(h+2,string(w+2,'.'));
		for(int i=1;i<=h;i++){
			string t;
			cin>>t;
			ss[i]='.'+t+'.';
		}
		vector<vector<pair<int,int>>>pparent(h+2,vector<pair<int,int>>(w+2,{MOD,MOD}));
		for(int i=0;i<h+2;i++){
			for(int j=0;j<w+2;j++){
				if(pparent[i][j].first!=MOD)continue;
				pparent[i][j]={i,j};
				queue<pair<int,int>>Q;
				Q.push({i,j});
				while(!Q.empty()){
					int cy=Q.front().first;
					int cx=Q.front().second;
					Q.pop();
					if(ss[i][j]=='#'){
						for(int k=0;k<8;k++){
							int ny=cy+blackdiry[k];							
							int nx=cx+blackdirx[k];							
							if(ny<0||nx<0||ny>=h+2||nx>=w+2)continue;
							if(ss[ny][nx]=='.')continue;
							if(pparent[ny][nx]==make_pair(i,j))continue;
							pparent[ny][nx]={i,j};
							Q.push({ny,nx});
						}
					}
					else{
						for(int k=0;k<4;k++){
							int ny=cy+whitediry[k];							
							int nx=cx+whitedirx[k];							
							if(ny<0||nx<0||ny>=h+2||nx>=w+2)continue;
							if(ss[ny][nx]=='#')continue;
							if(pparent[ny][nx]==make_pair(i,j))continue;
							pparent[ny][nx]={i,j};
							Q.push({ny,nx});
						}
					}
				}
			}
		}
		int cnt=0;
		vector<vector<int>>connect(H+2,vector<int>(W+2,-1));
		for(int i=0;i<H+2;i++){
			for(int j=0;j<W+2;j++){
				if(parent[i][j]!=make_pair(i,j))continue;
				connect[i][j]=cnt++;
			}
		}
		vector<vector<int>>edge(cnt);
		for(int i=0;i<H+2;i++){
			for(int j=0;j<W+2;j++){
				if(parent[i][j]!=make_pair(i,j))continue;
				if(!i)continue;
				int nx=connect[parent[i-1][j].first][parent[i-1][j].second];
			//	cout<<parent[i-1][j].first<<" "<<parent[i-1][j].second<<endl;
			//	cout<<connect[i][j]<<" "<<nx<<endl;
				edge[nx].push_back(connect[i][j]);
				edge[connect[i][j]].push_back(nx);
			}
		}
		int ccnt=0;
		vector<vector<int>>cconnect(h+2,vector<int>(w+2,-1));
		for(int i=0;i<h+2;i++){
			for(int j=0;j<w+2;j++){
				if(pparent[i][j]!=make_pair(i,j))continue;
				cconnect[i][j]=ccnt++;
			}
		}
		vector<vector<int>>eedge(ccnt);
		for(int i=0;i<h+2;i++){
			for(int j=0;j<w+2;j++){
				if(pparent[i][j]!=make_pair(i,j))continue;
				if(!i)continue;
				int nx=cconnect[pparent[i-1][j].first][pparent[i-1][j].second];
			//	cout<<parent[i-1][j].first<<" "<<parent[i-1][j].second<<endl;
				//cout<<connect[i][j]<<" "<<nx<<endl;
				eedge[nx].push_back(cconnect[i][j]);
				eedge[cconnect[i][j]].push_back(nx);
			}
		}
		
		long long int reta=Hash(0,0,-1,edge);
		long long int retb=Hash(0,0,-1,eedge);
		if(reta==retb)cout<<"yes\n";
		else cout<<"no\n";
	}
	
	return 0;
}


Measured memory_bytes: 3728