#include<stdio.h>
int n,m,a[15][15],b[15][15],lp,cp,lm,cm,k,i,j,l1,c1,l2,c2,pow;
int p,u,c[100][100],la,ca,lv,cv;
char dx[4]={-1,0,1,0};
char dy[4]={0,-1,0,1};
int main()
{
freopen("paianjen.in","r",stdin);
freopen("paianjen.out","w",stdout);
scanf("%d %d %d %d %d %d %d",&m,&n,&lp,&cp,&lm,&cm,&k);
for(i=1;i<=k;i++)
{
scanf("%d %d %d %d",&l1,&c1,&l2,&c2);
if(l1==l2)
if(c1<c2)
{
for(j=c1+1;j<c2;j++)
a[l1][j]=a[l1][j]|1010;
a[l1][c1]=a[l1][c1]|10;
a[l1][c2]=a[l1][c2]|1000;
}
else
{
for(j=c2+1;j<c1;j++)
a[l1][j]=a[l1][j]|1010;
a[l1][c2]=a[l1][c2]|10;
a[l1][c1]=a[l1][c1]|1000;
}
if(c1==c2)
if(l1<l2)
{
for(j=l1+1;j<l2;j++)
a[j][c1]=a[j][c1]|101;
a[l1][c1]=a[l1][c1]|1;
a[l2][c1]=a[l2][c1]|100;
}
else
{
for(j=l2+1;j<l1;j++)
a[j][c1]=a[j][c1]|101;
a[l2][c1]=a[l2][c1]|1;
a[l1][c1]=a[l1][c1]|100;
}
}
for (i=0;i<=n+1;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
}
for (i=0;i<=m+1;i++)
{
a[i][0]=-1;
a[i][n+1]=-1;
}
//LEE
p=1; u=1;
c[1][0]=lp;
c[1][1]=cp;
a[lp][cp]=1;
while (p<=u)
{
la=c[p][0];
ca=c[p][1];
for (i=0;i<4;i++)
{
lv=la+dx[i];
cv=ca+dy[i];
if(i==0) pow=1000;
if(i==1) pow=100;
if(i==2) pow=10;
if(i==3) pow=1;
if(a[lv][cv]==0 && ((a[la][ca]/pow)%10==0) ){
u++;
c[u][0]=lv;
c[u][1]=cv;
b[lv][cv]=b[la][ca]+1;
if (lv==lm && cv==cm){
printf("%d",b[lv][cv]);
break;
}
}
}
p++;
}
return 0;
}