#include "iostream"
#include "stdio.h"
#include "string.h"
using namespace std;
int mx, my, dx, dy, n, m;
int output, front, rear;
bool visited[1000][1000];
struct q{
int x;
int y;
int count;
}queue[10000];
bool isValid(int i, int j)
{
if(i >= 0 && i <= n && j >= 0 && j <= m && !visited[i][j])
return true;
return false;
}
void push(int x, int y, int moves)
{
visited[x][y] = true;
struct q temp;
temp.x = x;
temp.y = y;
temp.count = moves;
queue[rear] = temp;
rear++;
}
void pop()
{
front++;
}
int isEmpty()
{
if(front == rear)
return 1;
else return 0;
}
void bfs()
{
push(mx, my, 0);
while(!isEmpty())
{
struct q temp;
temp = queue[front];
int curx, cury, curCount;
curx = temp.x;
cury = temp.y;
curCount = temp.count;
if(curx == dx && cury == dy)
{
output = curCount;
break;
}
if(isValid(curx + 2, cury + 1))
push(curx + 2, cury + 1, curCount + 1);
if(isValid(curx + 2, cury - 1))
push(curx + 2, cury - 1, curCount + 1);
if(isValid(curx - 2, cury + 1))
push(curx - 2, cury + 1, curCount + 1);
if(isValid(curx - 2, cury - 1))
push(curx - 2, cury - 1, curCount + 1);
if(isValid(curx + 1, cury + 2))
push(curx + 1, cury + 2, curCount + 1);
if(isValid(curx + 1, cury - 2))
push(curx + 1, cury - 2, curCount + 1);
if(isValid(curx - 1, cury + 2))
push(curx - 1, cury + 2, curCount + 1);
if(isValid(curx - 1, cury - 2))
push(curx - 1, cury - 2, curCount + 1);
pop();
}
}
int main()
{
int tcase;
scanf("%d", &tcase);
while(tcase--)
{
output = -1, front = rear = 0;
memset(visited, false, sizeof(visited));
scanf("%d %d %d %d %d %d", &n, &m, &mx, &my, &dx, &dy);
bfs();
printf("%d\n", output);
}
}
I2luY2x1ZGUgImlvc3RyZWFtIgojaW5jbHVkZSAic3RkaW8uaCIKI2luY2x1ZGUgInN0cmluZy5oIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbXgsIG15LCBkeCwgZHksIG4sIG07CmludCBvdXRwdXQsIGZyb250LCByZWFyOwpib29sIHZpc2l0ZWRbMTAwMF1bMTAwMF07CnN0cnVjdCBxewoJaW50IHg7CglpbnQgeTsgCglpbnQgY291bnQ7Cn1xdWV1ZVsxMDAwMF07CmJvb2wgaXNWYWxpZChpbnQgaSwgaW50IGopCnsKCWlmKGkgPj0gMCAmJiBpIDw9IG4gJiYgaiA+PSAwICYmIGogPD0gbSAmJiAhdmlzaXRlZFtpXVtqXSkKCQlyZXR1cm4gdHJ1ZTsKCXJldHVybiBmYWxzZTsKfQp2b2lkIHB1c2goaW50IHgsIGludCB5LCBpbnQgbW92ZXMpCnsKCXZpc2l0ZWRbeF1beV0gPSB0cnVlOwoJc3RydWN0IHEgdGVtcDsKCXRlbXAueCA9IHg7Cgl0ZW1wLnkgPSB5OwoJdGVtcC5jb3VudCA9IG1vdmVzOwoJcXVldWVbcmVhcl0gPSB0ZW1wOwoJcmVhcisrOwp9CnZvaWQgcG9wKCkKewoJZnJvbnQrKzsKfQppbnQgaXNFbXB0eSgpCnsKCWlmKGZyb250ID09IHJlYXIpCgkJcmV0dXJuIDE7CgllbHNlIHJldHVybiAwOwp9CnZvaWQgYmZzKCkKewoJcHVzaChteCwgbXksIDApOwoJd2hpbGUoIWlzRW1wdHkoKSkKCXsKCQlzdHJ1Y3QgcSB0ZW1wOwoJCXRlbXAgPSBxdWV1ZVtmcm9udF07CgkJaW50IGN1cngsIGN1cnksIGN1ckNvdW50OwoJCWN1cnggPSB0ZW1wLng7CgkJY3VyeSA9IHRlbXAueTsKCQljdXJDb3VudCA9IHRlbXAuY291bnQ7CgkJaWYoY3VyeCA9PSBkeCAmJiBjdXJ5ID09IGR5KQoJCXsKCQkJb3V0cHV0ID0gY3VyQ291bnQ7CgkJCWJyZWFrOwoJCX0KCQlpZihpc1ZhbGlkKGN1cnggKyAyLCBjdXJ5ICsgMSkpCgkJCXB1c2goY3VyeCArIDIsIGN1cnkgKyAxLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggKyAyLCBjdXJ5IC0gMSkpCgkJCXB1c2goY3VyeCArIDIsIGN1cnkgLSAxLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggLSAyLCBjdXJ5ICsgMSkpCgkJCXB1c2goY3VyeCAtIDIsIGN1cnkgKyAxLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggLSAyLCBjdXJ5IC0gMSkpCgkJCXB1c2goY3VyeCAtIDIsIGN1cnkgLSAxLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggKyAxLCBjdXJ5ICsgMikpCgkJCXB1c2goY3VyeCArIDEsIGN1cnkgKyAyLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggKyAxLCBjdXJ5IC0gMikpCgkJCXB1c2goY3VyeCArIDEsIGN1cnkgLSAyLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggLSAxLCBjdXJ5ICsgMikpCgkJCXB1c2goY3VyeCAtIDEsIGN1cnkgKyAyLCBjdXJDb3VudCArIDEpOwoKCQlpZihpc1ZhbGlkKGN1cnggLSAxLCBjdXJ5IC0gMikpCgkJCXB1c2goY3VyeCAtIDEsIGN1cnkgLSAyLCBjdXJDb3VudCArIDEpOwoJCXBvcCgpOwoJfQp9CmludCBtYWluKCkKewoJaW50IHRjYXNlOwoJc2NhbmYoIiVkIiwgJnRjYXNlKTsKCXdoaWxlKHRjYXNlLS0pCgl7CgkJb3V0cHV0ID0gLTEsIGZyb250ID0gcmVhciA9IDA7CgkJbWVtc2V0KHZpc2l0ZWQsIGZhbHNlLCBzaXplb2YodmlzaXRlZCkpOwoJCXNjYW5mKCIlZCAlZCAlZCAlZCAlZCAlZCIsICZuLCAmbSwgJm14LCAmbXksICZkeCwgJmR5KTsKCQliZnMoKTsKCQlwcmludGYoIiVkXG4iLCBvdXRwdXQpOwoJfQp9