/*
TASK:hop
LANG:C++
*/
#include <iostream>
#include <vector>
using namespace std;
main(){
       int n,m,k,bb[2][10],x1,x2,y1,y2,s1,s2,f;
       cin>>n>>m;
       m++;
       n++;
       cin>>x1>>y1>>s1;
       cin>>x2>>y2>>s2;
       if (y1>y2) {
                  k=x1;
                  x1=x2;
                  x2=k;
                  k=y1;
                  y1=y2;
                  y2=k;
                  k=y1;
                  y1=y2;
                  y2=k;
       }
       vector <int> a[1500],b[1500];
       for (int i=0; i<n; i++)
           for (int j=0; j<m; j++){
               a[i].push_back(0);
               b[i].push_back(0);
           }
       k=0;
       for (int i=0; i<s1; i++)
           for (int j=0; j<s1; j++)
               if (j*j+i*i==s1*s1){ bb[0][k]=i; bb[1][k]=j; k++;}
//       for (int i=0; i<k; i++) cout<<bb[0][i]<<' '<<bb[1][i]<<endl;
       if (x2>x1) f=1; else f=-1;
       a[x1+f*s1][y1]=1;
       a[x1][y1+s1]=1;
       for (int ui=0; ui<k; ui++){
           if ((x1+f*bb[0][ui]<n)&&(x1+f*bb[0][ui]>-1)&&(y1+bb[1][ui]<m))  a[x1+f*bb[0][ui]][y1+bb[1][ui]]=1;
           if ((y1+bb[0][ui]<m)&&(x1+f*bb[1][ui]<n)&&(x1+f*bb[1][ui]>-1)) a[x1+f*bb[1][ui]][y1+bb[0][ui]]=1;
       }       
       for (int i=x1; ((i<n)&&(i>-1)); i=i+f)
           for (int j=y1; j<m; j++){
               if (a[i][j]!=0){
                  if ((i+f*s1<n)&&(i+f*s1>-1)) a[i+f*s1][j]=a[i][j]+1;
                  if ((j+s1)<m) a[i][j+s1]=a[i][j]+1;
                  for (int ui=0; ui<k; ui++){
                      if ((i+bb[0][ui]<n)&&(i+f*bb[0][ui]>-1)&&(j+bb[1][ui]<m))  a[i+f*bb[0][ui]][j+bb[1][ui]]=a[i][j]+1;
                      if ((j+bb[0][ui]<m)&&(i+f*bb[1][ui]<n)&&(i+f*bb[1][ui]>-1)) a[i+f*bb[1][ui]][j+bb[0][ui]]=a[i][j]+1;
                  }
               }
           }
              k=0;
       for (int i=1; i<s2; i++)
           for (int j=1; j<s2; j++)
               if (j*j+i*i==s2*s2){ bb[0][k]=i; bb[1][k]=j; k++;}
       for (int i=0; i<k; i++) cout<<bb[0][k]<<' '<<bb[1][k]<<endl;
       b[x2-f*s2][y2]=1;
       b[x2][y2-s2]=1;
       for (int ui=0; ui<k; ui++){
              if ((x2-f*bb[0][ui]<n)&&(x2-f*bb[0][ui]>-1)&&(y2-bb[1][ui]>-1)) b[x2-f*bb[0][ui]][y2-bb[1][ui]]=1;
              if ((y2-bb[0][ui]>-1)&&(x2-f*bb[1][ui]<n)&&(x2-f*bb[1][ui]>-1)) b[x2-f*bb[1][ui]][y2-bb[0][ui]]=1;
       }
       for (int i=x2; ((i<n)&&(i>-1)); i=i-f)
           for (int j=y2; j>-1; j--){
               if (b[i][j]!=0){
                  if ((i-f*s1<n)&&(i-f*s1>-1)) b[i-s2][j]=b[i][j]+1;
                  if ((j-s1)>-1) b[i][j-s1]=b[i][j]+1;
                  for (int ui=0; ui<k; ui++){
                      if ((i-f*bb[0][ui]<n)&&(i-f*bb[0][ui]>-1)&&(j-bb[1][ui]>-1)) b[i-f*bb[0][ui]][j-bb[1][ui]]=b[i][j]+1;
                      if ((j-bb[0][ui]>-1)&&(i-f*bb[1][ui]<n)&&(i-f*bb[1][ui]>-1)) b[i-f*bb[1][ui]][j-bb[0][ui]]=b[i][j]+1;
                  }
               }
           }
           int min=30000;
/*       for (int i=0; i<n; i++){
           for (int j=0; j<m; j++)
           cout<<a[i][j]<<' ';
           cout<<endl;
           }
*/
       for (int i=0; i<n; i++)
           for (int j=0; j<m; j++)
               if (((a[i][j]+b[i][j])<min)&&(a[i][j]!=0)&&(b[i][j]!=0)) min=a[i][j]+b[i][j];
       if ((a[x2][y2]<min)&&(a[x2][y2]!=0)) min=a[x2][y2];
       if ((b[x1][y1]<min)&&(b[x1][y1]!=0)) min=b[x1][y1];
       if (((x1==x2)&&(y1==y2))||(min==30000)) cout<<'0'<<endl; else cout<<min<<endl;
}
