#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//英语 抄博友程序 巧妙 没掌握
int n,m;
int sn,sm;
bool key[109][109];
bool s[10220][1009];//抄博友程序
bool vis[10220][1009];
bool in(int y)
{
if(y>=0&&y<sm)
{
return true;
}
return false;
}
bool check(int a,int b)
{
//cout<<"check "<<a<<" "<<b<<endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(key[i][j]&&s[i+a][j+b])
{
return false;
}
}
}
return true;
}
int main()
{
int T;
//cin>>T;
scanf("%d",&T);
while(T--)
{
memset(key,false,sizeof(key));
memset(s,false,sizeof(s));
memset(vis,false,sizeof(vis));
//cin>>n>>m;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
{
getchar();
for(int j=0;j<m;j++)
{
char c;
scanf("%c",&c);
//cout<<c<<endl;
//cin>>c;
if(c=='#')
{
key[i][j]=true;
}
}
}
//cin>>sn>>sm;
scanf("%d %d",&sn,&sm);
sn=sn+n;
for(int i=n;i<sn;i++)
{
getchar();
for(int j=0;j<sm;j++)
{
char c;
//cin>>c;
scanf("%c",&c);
if(c=='#')
{
s[i][j]=true;
}
}
}
for(int j=0;j<sm;j++)
{
vis[0][j]=true;
}
int i;
int flag;
for(i=1;i<sn;i++)
{
flag=0;
for(int j=0;j<=sm-m;j++)//抄博友程序
{
if(vis[i][j]==0 &&(vis[i-1][j]==1||(in(j-1)&&vis[i][j-1])||(in(j+1)&&vis[i][j+1])))//抄博友程序 没掌握
{
if(check(i,j))//抄博友程序
{
//cout<<i<<" "<<j<<endl;
flag=1;
vis[i][j]=1;
if(j>0&&vis[i][j-1]==0)//抄博友程序
{
j=j-2;
}
}
}
}
if(flag==0)
{
break;
}
}
//cout<<i<<endl;
if(i>=sn)
{
cout<<"The key can fall through."<<endl;
}else
{
cout<<"The key falls to depth "<<i-1<<"."<<endl;//抄博友程序
}
}
return 0;
}