rt
#include<bits/stdc++.h>
using namespace std;
//洛殿生快!
long long a[205][205],mid1,first,mid0;
int n,m,x,y,step=0;
bool controlRod=true;
bool same;
int gcd(int x,int y)
{
while(y)
{
mid0=x;
x=y;
y=mid0%y;
}
return x;
/*if(y==0)
return x;
return gcd(y,x%y);*/
}
int gcd(int x,int y,int z,int n,int m)
{
return gcd(m,gcd(x,gcd(y,gcd(z,n))));
}
int check(int x,int y)
{
mid1=gcd(a[x][y],a[x+1][y],a[x-1][y],a[x][y+1],a[x][y-1]);
if(!first)
first=mid1;
else
{
if(mid1!=first)
same=false;
}
a[x][y]=mid1;
a[x+1][y]=mid1;
a[x-1][y]=mid1;
a[x][y+1]=mid1;
a[x][y-1]=mid1;
}
int main()
{
cin>>n>>m;
for(int k=1;k<=n;k++)
{
for(int q=1;q<=m;q++)
{
scanf("%lld",&a[k][q]);
}
}
for(int k=1;k<=n;k++)
{
a[k][0]=a[k][1];
a[k][m+1]=a[k][m];
}
for(int q=1;q<=m;q++)
{
a[0][q]=a[1][q];
a[n+1][q]=a[n][q];
}
cin>>x>>y;
while(controlRod)
{
if(a[x][y]==1)
{
cout<<step;
return 0;
}
step++;
same=true;
first=0;
for(int k=1;k<=n&&controlRod;k++)
{
for(int q=1;q<=m&&controlRod;q++)
{
check(k,q);
if(a[x][y]==1)
{
cout<<step;
return 0;
}
}
}
if(same)
{
cout<<-1;
return 0;
}
}
}