#include<bits/stdc++.h>
using namespace std;
#define uniq(x) x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i,intial,n) for(int i=intial; i<(n) ; i++)
#define REP(i,intial,n) for(int i=intial; i<=(n) ; i++)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define MP make_pair
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p) //Pow calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b);
b=(b*b);
p>>=1;
}
return r;
}
LL big_mod(LL n, LL p)
{
if(p==0) return 1;
if(!(p&1))
{
LL r = big_mod(n,p/2) % MOD;
return ( (r%MOD) * (r%MOD) ) % MOD;
}
else return ( ( n%MOD) * (big_mod(n,p-1) %MOD)) % MOD;
}
long long gcd(long long a, long long b)
{
while (b != 0)
{
long long t = a % b;
a = b;
b = t;
}
return a;
}
//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
const int dx[4]= {1,1,-1,-1};
const int dy[4]= {1,-1,1,-1};
int main()
{
//freopen("a.in", "r", stdin);
//freopen("a.out", "w", stdout);
int r1,r2,c1,c2,dis[10][10];
while(cin>>r1>>c1>>r2>>c2)
{
rep(i,1,9)
{
rep(j,1,9)
{
dis[i][j]=100;
}
}
queue<pair<int,int>> Q;
Q.push({r1,c1});
dis[r1][c1]=0;
while(!Q.empty())
{
auto current=Q.front();
Q.pop();
int x=current.first;
int y=current.second;
int c=dis[x][y]+1;
//cout<<"x = "<<x<<" y = "<<y<<" c = "<<c<<endl<<endl<<endl<<endl;
rep(i,0,4)
{
int xx=x;
int yy=y;
while(true)
{
xx+=dx[i];
yy+=dy[i];
if(!(xx>=1 and xx<=8 and yy>=1 and yy<=8)) break;
//cout<<"xx = "<<xx<<" yy = "<<yy<<" i = "<<i<<endl;
if(dis[xx][yy]==100)
{
dis[xx][yy]=c;
Q.push({xx,yy});
}
}
}
}
/* rep(i,1,9)
{
rep(j,1,9)
{
cout<<dis[i][j]<<" ";
}
cout<<endl;
}*/
if(dis[r2][c2]==100) cout<<"-1"<<endl;
else cout<<dis[r2][c2]<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSB1bmlxKHgpICB4LmVyYXNlKHVuaXF1ZSh4LmJlZ2luKCkseC5lbmQoKSksIHguZW5kKCkpIC8vVW5pcXVlIHZhbHVlIGZpbmQgZnJvbSB2ZWN0b3IKI2RlZmluZSB1cHBlcihhcnIsbixmaXhlZCkgdXBwZXJfYm91bmQoYXJyLGFycituLGZpeGVkKS1hcnIgIC8vVXBwZXIgdmFsdWUgc2VhcmNoOwojZGVmaW5lIGxvd2VyKGFycixuLGZpeGVkKSB1cHBlcl9ib3VuZChhcnIsYXJyK24sZml4ZWQpLWFyciAgLy9Mb3dlciB2YWx1ZSBzZWFyY2g7CiNkZWZpbmUgbWF4MyhhLGIsYykgbWF4KG1heChhLGIpLGMpLy9tYXhpbXVtIHZhbHVlIGZpbmQgdGhyZWUgdmFsdWU7CiNkZWZpbmUgbWluMyhhLGIsYykgbWluKG1pbihhLGIpLGMpLy9taW5pbXVtIHZhbHVlIGZpbmQgdGhyZWUgdmFsdWU7CiNkZWZpbmUgcmVwKGksaW50aWFsLG4pIGZvcihpbnQgaT1pbnRpYWw7IGk8KG4pIDsgaSsrKQojZGVmaW5lIFJFUChpLGludGlhbCxuKSBmb3IoaW50IGk9aW50aWFsOyBpPD0obikgOyBpKyspCiNkZWZpbmUgUEkgYWNvcygtMS4wKS8vUEkgQ2FsY3VsYXRpb24KI2RlZmluZSBMTCBsb25nIGxvbmcKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBJTkZfTUFYIDIxNDc0ODM2NDcKI2RlZmluZSBJTkZfTUlOIC0yMTQ3NDgzNjQ3CiNkZWZpbmUgTVggMTAwMDAwNQojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgUE9XKFQgYixUIHApICAgICAgICAgIC8vUG93IGNhbGN1bGF0aW9uCnsKICAgIFQgcj0xOwogICAgd2hpbGUocCkKICAgIHsKICAgICAgICBpZihwJjEpcj0ocipiKTsKICAgICAgICBiPShiKmIpOwogICAgICAgIHA+Pj0xOwogICAgfQogICAgcmV0dXJuIHI7Cn0KCkxMIGJpZ19tb2QoTEwgbiwgTEwgcCkKewogICAgaWYocD09MCkgcmV0dXJuIDE7CiAgICBpZighKHAmMSkpCiAgICB7CiAgICAgICAgTEwgciA9IGJpZ19tb2QobixwLzIpICUgTU9EOwogICAgICAgIHJldHVybiAoIChyJU1PRCkgKiAociVNT0QpICkgJSBNT0Q7CiAgICB9CiAgICBlbHNlIHJldHVybiAoICggbiVNT0QpICogKGJpZ19tb2QobixwLTEpICVNT0QpKSAlIE1PRDsKfQpsb25nIGxvbmcgZ2NkKGxvbmcgbG9uZyBhLCBsb25nIGxvbmcgYikKewogICAgd2hpbGUgKGIgIT0gMCkKICAgIHsKICAgICAgICBsb25nIGxvbmcgdCA9IGEgJSBiOwogICAgICAgIGEgPSBiOwogICAgICAgIGIgPSB0OwogICAgfQogICAgcmV0dXJuIGE7Cn0KCi8vfHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fHxNYWluX0NvZGVfU3RhcnRfRnJvbV9IZXJlfHw8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfHwKY29uc3QgaW50IGR4WzRdPSB7MSwxLC0xLC0xfTsKY29uc3QgaW50IGR5WzRdPSB7MSwtMSwxLC0xfTsKCmludCBtYWluKCkKewogICAgLy9mcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiAgICAvL2ZyZW9wZW4oImEub3V0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHIxLHIyLGMxLGMyLGRpc1sxMF1bMTBdOwogICAgd2hpbGUoY2luPj5yMT4+YzE+PnIyPj5jMikKICAgIHsKICAgICAgICByZXAoaSwxLDkpCiAgICAgICAgewogICAgICAgICAgICByZXAoaiwxLDkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRpc1tpXVtqXT0xMDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcXVldWU8cGFpcjxpbnQsaW50Pj4gUTsKICAgICAgICBRLnB1c2goe3IxLGMxfSk7CiAgICAgICAgZGlzW3IxXVtjMV09MDsKICAgICAgICB3aGlsZSghUS5lbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgYXV0byBjdXJyZW50PVEuZnJvbnQoKTsKICAgICAgICAgICAgUS5wb3AoKTsKICAgICAgICAgICAgaW50IHg9Y3VycmVudC5maXJzdDsKICAgICAgICAgICAgaW50IHk9Y3VycmVudC5zZWNvbmQ7CiAgICAgICAgICAgIGludCBjPWRpc1t4XVt5XSsxOwogICAgICAgICAgICAvL2NvdXQ8PCJ4ID0gIjw8eDw8IiB5ID0gIjw8eTw8IiBjID0gIjw8Yzw8ZW5kbDw8ZW5kbDw8ZW5kbDw8ZW5kbDsKICAgICAgICAgICAgcmVwKGksMCw0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgeHg9eDsKICAgICAgICAgICAgICAgIGludCB5eT15OwogICAgICAgICAgICAgICAgd2hpbGUodHJ1ZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB4eCs9ZHhbaV07CiAgICAgICAgICAgICAgICAgICAgeXkrPWR5W2ldOwogICAgICAgICAgICAgICAgICAgIGlmKCEoeHg+PTEgYW5kIHh4PD04IGFuZCB5eT49MSBhbmQgeXk8PTgpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAvL2NvdXQ8PCJ4eCA9ICI8PHh4PDwiIHl5ID0gIjw8eXk8PCIgaSA9ICI8PGk8PGVuZGw7CiAgICAgICAgICAgICAgICAgICAgaWYoZGlzW3h4XVt5eV09PTEwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc1t4eF1beXldPWM7CiAgICAgICAgICAgICAgICAgICAgICAgIFEucHVzaCh7eHgseXl9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgLyogcmVwKGksMSw5KQogICAgICAgIHsKICAgICAgICAgICAgcmVwKGosMSw5KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0PDxkaXNbaV1bal08PCIgICAgICI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICB9Ki8KCiAgICAgICAgaWYoZGlzW3IyXVtjMl09PTEwMCkgY291dDw8Ii0xIjw8ZW5kbDsKICAgICAgICBlbHNlIGNvdXQ8PGRpc1tyMl1bYzJdPDxlbmRsOwogICAgfQoKfQo=