#include<bits/stdc++.h>
using namespace std;
int MIN=INT_MAX,m,n,sx,sy,ex,ey;
int dx[]={-2,-1,1,2, 2, 1,-1,-2};
int dy[]={ 1, 2,2,1,-1,-2,-2,-1};
struct box{
int px,py,s;
};
box boxes[1000000];
int visited[500][500];
void bfs(int a,int b){
for(int i=0;i<500;i++)
for(int j=0;j<500;j++)
visited[i][j]=0;
int t=0,w=0;
boxes[w].px=a;boxes[w].py=b;boxes[w].s=0;
visited[boxes[w].px][boxes[w].py]=1;w++;
while(t!=w){
int tx,ty,ts;
tx=boxes[t].px;
ty=boxes[t].py;
ts=boxes[t].s;
if(tx==ex&&ty==ey){MIN=ts;return;}
for(int i=0;i<8;i++){
if(tx+dx[i]<1||tx+dx[i]>n||ty+dy[i]<1||ty+dy[i]>m||visited[tx+dx[i]][ty+dy[i]])
continue;
boxes[w].px=tx+dx[i];
boxes[w].py=ty+dy[i];
boxes[w].s=ts+1;
visited[boxes[w].px][boxes[w].py]=1;
w++;
}
t++;
}
}
int main(){
cin>>n>>m>>sx>>sy;
for(ex=1;ex<=n;ex++){
for(ey=1;ey<=m;ey++){
MIN=INT_MAX;
bfs(sx,sy);
if(MIN==INT_MAX) printf("%-5d",-1);
else printf("%-5d",MIN);
}
cout<<endl;
}
}