#include<iostream>
#include<cstdio>
using namespace std;
struct node{
int xx,yy,step;
};
node que[5000];
int m,n,sx,sy;
int dir[8][2] = {{-2,1},{-1,2},{1,2},{2,1},
{2,-1},{1,-2},{-1,-2},{-2,-1}};
int bfs(int x,int y,int fx,int fy){
// cout << x<<" " << y <<endl;
int head = 0,tail = 0,book[400][400] = {};
book[x][y] = 1;
que[tail].xx = x;
que[tail].yy = y;
que[tail].step = 0;
tail++;
while(head<tail){
for(int i = 0;i < 8;i++){
int tx = dir[i][0] + que[head].xx;
int ty = dir[i][1] + que[head].yy;
if(tx >= 1 && tx <= m && ty >= 1 && ty <= n && book[tx][ty] == 0){
book[tx][ty] = 1;
que[tail].xx = tx;
que[tail].yy = ty;
que[tail].step = que[head].step + 1;
tail++;
}
// cout << tx << " "<< ty << " " <<endl;
if(tx == fx && ty == fy){
return que[tail-1].step;
}
}
head++;
}
return -1;
}
int main()
{
int x;
cin >> m >> n >> sx >> sy;
for(int i = 1;i <= m;i++){
for(int j = 1;j <= n;j++){
if(i==sx&&j==sy){
printf("%-5d",0);
}
else{
printf("%-5d",bfs(sx,sy,i,j));
// bfs(sx,sy,i,j);
}
}
cout << endl;
}
return 0;
}