#include <cstdio>
using namespace std;
int n,m,i,j,sol,x,y,v[52][52],nr,max,as,b;
char a[52][52],c;
int dx[]={0,0,0,1,-1};
int dy[]={0,1,-1,0,0};
int verif(int x1,int y1,int x2, int y2)
{
if(x2>=1&&x2<=n&&y2>=1&&y2<=m)
if(a[x1][y1]==a[x2][y2]&&v[x2][y2]!=-1)
return 1;
return 0;
}
int verif2(int x1,int y1,int x2, int y2)
{
if(x2>=1&&x2<=n&&y2>=1&&y2<=m)
if(a[x1][y1]==a[x2][y2]&&v[x2][y2]!=-2)
return 1;
return 0;
}
void fill(int x,int y)
{
int i;
nr++;
v[x][y]=-1;
for(i=1;i<=4;i++)if(verif(x,y,x+dx[i],y+dy[i])) fill(x+dx[i],y+dy[i]);
}
void sterge(int x,int y)
{
int i;
v[x][y]=-2;
for(i=1;i<=4;i++)if(verif2(x,y,x+dx[i],y+dy[i]))sterge(x+dx[i],y+dy[i]);
a[x][y]='*';
}
int gol()
{
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!='*'&&a[i][j]!=NULL) return 0;
return 1;
}
int empty(int col)
{
int i;
for(i=1;i<=n;i++)if(a[i][col]!='*')return 0; return 1;
}
void copy(int x,int y)
{
int i;
if(y<=m)
{
if(empty(y))copy(x,y+1);
else for(i=1;i<=n;i++){a[i][x]=a[i][y];a[i][y]='*';}
}
}
int cade(int x,int y)
{
int p=x,u=y;
x++;
while(a[x][y]=='*'&&x<=n)x++;
a[x-1][y]=a[p][u];
a[p][u]='*';
}
int main()
{
FILE *f=fopen("adunare.in","r");
FILE *g=fopen("adunare.out","w");
//fscanf(f,"%d %d",&n,&m);
//fscanf(f,"%c",&c);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)fscanf(f,"%c",&a[i][j]);
fscanf(f,"%c",&c);
}
fscanf(f,"%d %d",&as,&b);
while(!gol())
{
max=0;
sol++;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]=='*')v[i][j]=-1;else v[i][j]=0;
for(j=1;j<=m;j++)
for(i=n;i>=1;i--)
if(v[i][j]!=-1)
{
nr=0;
fill(i,j);
if(nr>max){max=nr;x=i;y=j;}
}
sterge(x,y);
for(j=1;j<=m;j++)
{
for(i=n-1;i>=1;i--)
if(a[i][j]!='*'&&a[i+1][j]=='*')cade(i,j);
}
for(j=1;j<=m;j++) if(empty(j)) copy(j,j+1);
}
sol=as+b;
fprintf(g,"%d",sol);
fclose(f);
fclose(g);
return 0;
}