#include <bits/stdc++.h>
#define ll long long
#define all(a) (a).begin(), (a).end()
#define dbg_line(x) cout << (x) << '\n'
#define dbg(x) cout << x << " "
#define len(x) (int)x.length()
using namespace std;
// <--> Report constants <-->
typedef pair<int, int> pii;
const int max_n = 1e5 + 5;
const ll inf = 1e9;
const ll m_inf = -1e9;
const ll mod = 1e9 + 7;
const int base = 32;
// <--> Report variables <-->
int n, m, p, q, s, t;
bool adj[1005][1005];
set<pair<int, int>> visited;
int dx[4] = {-1, -1, 1, 1};
int dy[4] = {-1, 1, -1, 1};
// <--> Main Code is Here <-->
void setIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
void call_file() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
}
struct Distance{
int x, y;
int d;
};
bool check(int i, int j){
return i >=1 && i <= n && j >= 1 && j <= n && !adj[i][j];
}
int BFS(){
queue<Distance> Q;
visited.insert({p, q});
Q.push({p, q, 0});
while (!Q.empty()){
Distance u = Q.front();
Q.pop();
for (int i = 0; i < 4; i++){
int x = u.x, y = u.y;
while (check(x + dx[i], y + dy[i])){
x += dx[i];
y += dy[i];
if (x == s && y == t){
return u.d + 1;
}
if (visited.find({x, y}) == visited.end()){
visited.insert({x, y});
Q.push({x, y, u.d + 1});
}
}
}
}
return -1;
}
int main() {
setIO();
call_file();
cin >> n >> m >> p >> q >> s >> t;
while (m--){
int x, y;
cin >> x >> y;
adj[x][y] = true;
}
cout << BFS();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKGEpIChhKS5iZWdpbigpLCAoYSkuZW5kKCkKI2RlZmluZSBkYmdfbGluZSh4KSBjb3V0IDw8ICh4KSA8PCAnXG4nCiNkZWZpbmUgZGJnKHgpIGNvdXQgPDwgeCA8PCAiICIKI2RlZmluZSBsZW4oeCkgKGludCl4Lmxlbmd0aCgpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gPC0tPiBSZXBvcnQgY29uc3RhbnRzIDwtLT4KCnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwpjb25zdCBpbnQgbWF4X24gPSAxZTUgKyA1Owpjb25zdCBsbCBpbmYgPSAxZTk7CmNvbnN0IGxsIG1faW5mID0gLTFlOTsKY29uc3QgbGwgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IGJhc2UgPSAzMjsKCi8vIDwtLT4gUmVwb3J0IHZhcmlhYmxlcyA8LS0+CgppbnQgbiwgbSwgcCwgcSwgcywgdDsKYm9vbCBhZGpbMTAwNV1bMTAwNV07CnNldDxwYWlyPGludCwgaW50Pj4gdmlzaXRlZDsKaW50IGR4WzRdID0gey0xLCAtMSwgMSwgMX07CmludCBkeVs0XSA9IHstMSwgMSwgLTEsIDF9OwoKLy8gPC0tPiBNYWluIENvZGUgaXMgSGVyZSA8LS0+Cgp2b2lkIHNldElPKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7Cn0KCnZvaWQgY2FsbF9maWxlKCkgewogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwp9CgpzdHJ1Y3QgRGlzdGFuY2V7CiAgICBpbnQgeCwgeTsKICAgIGludCBkOwp9OwoKYm9vbCBjaGVjayhpbnQgaSwgaW50IGopewogICAgcmV0dXJuIGkgPj0xICYmIGkgPD0gbiAmJiBqID49IDEgJiYgaiA8PSBuICYmICFhZGpbaV1bal07Cn0KCmludCBCRlMoKXsKICAgIHF1ZXVlPERpc3RhbmNlPiBROwogICAgdmlzaXRlZC5pbnNlcnQoe3AsIHF9KTsKICAgIFEucHVzaCh7cCwgcSwgMH0pOwogICAgd2hpbGUgKCFRLmVtcHR5KCkpewogICAgICAgIERpc3RhbmNlIHUgPSBRLmZyb250KCk7CiAgICAgICAgUS5wb3AoKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKyl7CiAgICAgICAgICAgIGludCB4ID0gdS54LCB5ID0gdS55OwogICAgICAgICAgICB3aGlsZSAoY2hlY2soeCArIGR4W2ldLCB5ICsgZHlbaV0pKXsKICAgICAgICAgICAgICAgIHggKz0gZHhbaV07CiAgICAgICAgICAgICAgICB5ICs9IGR5W2ldOwogICAgICAgICAgICAgICAgaWYgKHggPT0gcyAmJiB5ID09IHQpewogICAgICAgICAgICAgICAgICAgIHJldHVybiB1LmQgKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWQuZmluZCh7eCwgeX0pID09IHZpc2l0ZWQuZW5kKCkpewogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWQuaW5zZXJ0KHt4LCB5fSk7CiAgICAgICAgICAgICAgICAgICAgUS5wdXNoKHt4LCB5LCB1LmQgKyAxfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gLTE7Cn0KCmludCBtYWluKCkgewogICAgc2V0SU8oKTsKICAgIGNhbGxfZmlsZSgpOwogICAgY2luID4+IG4gPj4gbSA+PiBwID4+IHEgPj4gcyA+PiB0OwogICAgd2hpbGUgKG0tLSl7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBhZGpbeF1beV0gPSB0cnVlOwogICAgfQogICAgY291dCA8PCBCRlMoKTsKICAgIAp9Cg==