#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
#define X first
#define Y second
#define MP make_pair
#define PB push_back
#define SZ size
int main(void)
{
int a, b, c, d, e, f, g, aa, i, ii, akt, akt2, j, k;
int vrcholy[110][110];
int uz[110][110];
while (scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f) > 0) {
for (i = 1; i <= a; i++) {
for (ii = 1; ii <= b; ii++) {
vrcholy[i][ii] = 9999999;
uz[i][ii] = -1;
}
}
vrcholy[c][d] = 0;
uz[c][d] = 1;
akt = c;
akt2 = d;
if (akt - 1 > 0 && akt2 - 2 > 0)
if (vrcholy[akt - 1][akt2 - 2] > vrcholy[akt][akt2])
vrcholy[akt-1][akt2 - 2] = vrcholy[akt][akt2] + 1;
if (akt - 2 > 0 && akt2 - 1 > 0)
if (vrcholy[akt - 2][akt2 - 1] > vrcholy[akt][akt2])
vrcholy[akt-2][akt2 - 1] = vrcholy[akt][akt2] + 1;
if (akt + 1 <= a && akt2 - 2 > 0)
if (vrcholy[akt + 1][akt2 - 2] > vrcholy[akt][akt2])
vrcholy[akt+1][akt2 - 2] = vrcholy[akt][akt2] + 1;
if (akt + 2 <= a && akt2 - 1 > 0)
if (vrcholy[akt + 2][akt2 - 1] > vrcholy[akt][akt2])
vrcholy[akt+2][akt2 - 1] = vrcholy[akt][akt2] + 1;
if (akt - 1 > 0 && akt2 +2 <= b)
if (vrcholy[akt - 1][akt2 + 2] > vrcholy[akt][akt2])
vrcholy[akt-1][akt2 + 2] = vrcholy[akt][akt2] + 1;
if (akt - 2 > 0 && akt2 +1 <= b)
if (vrcholy[akt - 2][akt2 +1] > vrcholy[akt][akt2])
vrcholy[akt-2][akt2 +1] = vrcholy[akt][akt2] + 1;
if (akt + 1 <= a && akt2 + 2 <= b)
if (vrcholy[akt + 1][akt2 + 2] > vrcholy[akt][akt2])
vrcholy[akt+1][akt2 + 2] = vrcholy[akt][akt2] + 1;
if (akt + 1 <= a && akt2 + 2 <= b)
if (vrcholy[akt + 1][akt2 + 2] > vrcholy[akt][akt2])
vrcholy[akt+1][akt2 + 2] = vrcholy[akt][akt2] + 1;
for (i = 1; i <= a; i++) {
for (ii = 1; ii <= b; ii++) {
akt = -1;
akt2 = -1;
for (j = 1; j <= a; j++) {
for (k = 1; k <= b; k++) {
if (uz[j][k] == -1 && (akt == -1 || vrcholy[j][k] < vrcholy[akt][akt2]) && vrcholy[j][k] != 9999999) {
akt = j;
akt2 = k;
}
}
}
if (akt != -1) {
uz[akt][akt2] = 1;
if (akt - 1 > 0 && akt2 - 2 > 0)
if (vrcholy[akt - 1][akt2 - 2] > vrcholy[akt][akt2])
vrcholy[akt-1][akt2 - 2] = vrcholy[akt][akt2] + 1;
if (akt - 2 > 0 && akt2 - 1 > 0)
if (vrcholy[akt - 2][akt2 - 1] > vrcholy[akt][akt2])
vrcholy[akt-2][akt2 - 1] = vrcholy[akt][akt2] + 1;
if (akt + 1 <= a && akt2 - 2 > 0)
if (vrcholy[akt + 1][akt2 - 2] > vrcholy[akt][akt2])
vrcholy[akt+1][akt2 - 2] = vrcholy[akt][akt2] + 1;
if (akt + 2 <= a && akt2 - 1 > 0)
if (vrcholy[akt + 2][akt2 - 1] > vrcholy[akt][akt2])
vrcholy[akt+2][akt2 - 1] = vrcholy[akt][akt2] + 1;
if (akt - 1 > 0 && akt2 +2 <= b)
if (vrcholy[akt - 1][akt2 + 2] > vrcholy[akt][akt2])
vrcholy[akt-1][akt2 + 2] = vrcholy[akt][akt2] + 1;
if (akt - 2 > 0 && akt2 +1 <= b)
if (vrcholy[akt - 2][akt2 +1] > vrcholy[akt][akt2])
vrcholy[akt-2][akt2 +1] = vrcholy[akt][akt2] + 1;
if (akt + 1 <= a && akt2 + 2 <= b)
if (vrcholy[akt + 1][akt2 + 2] > vrcholy[akt][akt2])
vrcholy[akt+1][akt2 + 2] = vrcholy[akt][akt2] + 1;
if (akt + 1 <= a && akt2 + 2 <= b)
if (vrcholy[akt + 1][akt2 + 2] > vrcholy[akt][akt2])
vrcholy[akt+1][akt2 + 2] = vrcholy[akt][akt2] + 1;
}
}
}
if (vrcholy[e][f] != 9999999)
printf("%d\n", vrcholy[e][f]);
else
printf("impossible\n");
}
return 0;
}