#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define int long long
#define pii pair<int,int>
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
#define REP(i, a, b) for(int i = (a), _b = (b); i >= _b; i--)
using namespace std;
const int INF = 0x3f3f3f3f3f3f3f3f;
const int MAX_K = 1e5;
pii a[MAX_K + 5];
int n, k;
pii st;
void Input(){
cin >> n >> k >> st.fi >> st.sec;
FOR(i, 1, k) cin >> a[i].fi >> a[i].sec;
}
namespace sub12{
//begin sub12
bool check_sub(){
return k <= 10;
}
const int K = 10;
int dp[(1 << K) + 5][K + 5];
int get_dist(pii x, pii y){
if(x.fi == y.fi || x.sec == y.sec) return 0;
return min(abs(x.fi - y.fi), abs(x.sec - y.sec));
}
int walk(pii x, pii y){
return abs(x.fi - y.fi) + abs(x.sec - y.sec);
}
int get_ans(pii pos){
return min({walk(pos, {1, 1}),
walk(pos, {1, n}),
walk(pos, {n, 1}),
walk(pos, {n, n})});
}
void Solve(){
FOR(i, 0, k - 1) a[i] = a[i + 1];
memset(dp, 0x3f, sizeof(dp));
FOR(i, 0, k - 1) dp[1 << i][i] = get_dist(st, a[i]);
vector<int> pos_one;
FOR(mask, 1, (1 << k) - 1){
FOR(bit, 0, k - 1) if(mask & (1 << bit)){
pos_one.pb(bit);
}
for(int i : pos_one) for(int j : pos_one) if(i != j){
dp[mask][i] = min(dp[mask][i], dp[mask ^ (1 << i)][j] + get_dist(a[j], a[i]));
}
pos_one.clear();
}
int ans = get_ans(st);
FOR(mask, 1, (1 << k) - 1) FOR(i, 0, k - 1){
ans = min(ans, dp[mask][i] + get_ans(a[i]));
}
cout << ans;
}
//end sub12
}
namespace sub3{
//begin sub3
bool check_sub(){
return k <= 1000;
}
int get_dist(pii x, pii y){
return min(abs(x.fi - y.fi), abs(x.sec - y.sec));
}
int walk(pii x, pii y){
return abs(x.fi - y.fi) + abs(x.sec - y.sec);
}
int dist_ans(pii pos){
return min({walk(pos, {1, 1}),
walk(pos, {1, n}),
walk(pos, {n, 1}),
walk(pos, {n, n})});
}
vector<pii> g[MAX_K + 5];
int dist[MAX_K + 5];
void dijkstra(){
memset(dist, 0x3f, sizeof(dist));
priority_queue<pii, vector<pii>, greater<pii>> pq;
pq.push({0, 0});
dist[0] = 0;
while(sz(pq)){
int len = pq.top().fi;
int u = pq.top().sec;
pq.pop();
if(len > dist[u]) continue;
for(pii x : g[u]){
int v = x.fi, w = x.sec;
if(dist[v] > dist[u] + w){
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
}
void Solve(){
FOR(u, 1, k){
g[0].pb({u, get_dist(st, a[u])});
g[u].pb({k + 1, dist_ans(a[u])});
FOR(v, u + 1, k){
g[u].pb({v, get_dist(a[u], a[v])});
g[v].pb({u, get_dist(a[u], a[v])});
}
}
g[0].pb({k + 1, dist_ans(st)});
dijkstra();
cout << dist[k + 1];
}
//end sub3
}
namespace sub4{
//begin sub4
bool check_sub(){
return true;
}
struct Node{
pii pos;
int id;
}ar[MAX_K + 5];
int get_dist(pii x, pii y){
return min(abs(x.fi - y.fi), abs(x.sec - y.sec));
}
int walk(pii x, pii y){
return abs(x.fi - y.fi) + abs(x.sec - y.sec);
}
int dist_ans(pii pos){
return min({walk(pos, {1, 1}),
walk(pos, {1, n}),
walk(pos, {n, 1}),
walk(pos, {n, n})});
}
vector<pii> g[MAX_K + 5];
int dist[MAX_K + 5];
void dijkstra(){
memset(dist, 0x3f, sizeof(dist));
priority_queue<pii, vector<pii>, greater<pii>> pq;
pq.push({0, 0});
dist[0] = 0;
while(sz(pq)){
int len = pq.top().fi;
int u = pq.top().sec;
pq.pop();
if(len > dist[u]) continue;
for(pii x : g[u]){
int v = x.fi, w = x.sec;
if(dist[v] > dist[u] + w){
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
}
bool cmp_doc(const Node &x, const Node &y){
return (x.pos.fi < y.pos.fi);
}
bool cmp_ngang(const Node &x, const Node &y){
return (x.pos.sec < y.pos.sec);
}
void Solve(){
FOR(i, 1, k) ar[i] = {a[i], i};
FOR(i, 1, k){
g[0].pb({ar[i].id, get_dist(st, ar[i].pos)});
g[ar[i].id].pb({k + 1, dist_ans(ar[i].pos)});
}
sort(ar + 1, ar + k + 1, cmp_doc);
FOR(i, 1, k - 1){
g[ar[i].id].pb({ar[i + 1].id, get_dist(ar[i].pos, ar[i + 1].pos)});
g[ar[i + 1].id].pb({ar[i].id, get_dist(ar[i].pos, ar[i + 1].pos)});
}
sort(ar + 1, ar + k + 1, cmp_ngang);
FOR(i, 1, k - 1){
g[ar[i].id].pb({ar[i + 1].id, get_dist(ar[i].pos, ar[i + 1].pos)});
g[ar[i + 1].id].pb({ar[i].id, get_dist(ar[i].pos, ar[i + 1].pos)});
}
g[0].pb({k + 1, dist_ans(st)});
dijkstra();
cout << dist[k + 1];
}
//end sub4
}
signed main(){
freopen("GAME.INP", "r", stdin);
freopen("GAME.OUT", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
if(sub12::check_sub()) return sub12::Solve(), 0;
if(sub3::check_sub()) return sub3::Solve(), 0;
if(sub4::check_sub()) return sub4::Solve(), 0;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBzeih2KSAoaW50KSh2KS5zaXplKCkKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA+PSBfYjsgaS0tKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBNQVhfSyA9IDFlNTsKCnBpaSBhW01BWF9LICsgNV07CmludCBuLCBrOwpwaWkgc3Q7Cgp2b2lkIElucHV0KCl7CiAgICBjaW4gPj4gbiA+PiBrID4+IHN0LmZpID4+IHN0LnNlYzsKICAgIEZPUihpLCAxLCBrKSBjaW4gPj4gYVtpXS5maSA+PiBhW2ldLnNlYzsKfQoKbmFtZXNwYWNlIHN1YjEyewovL2JlZ2luIHN1YjEyCmJvb2wgY2hlY2tfc3ViKCl7CiAgICByZXR1cm4gayA8PSAxMDsKfQoKY29uc3QgaW50IEsgPSAxMDsKaW50IGRwWygxIDw8IEspICsgNV1bSyArIDVdOwoKaW50IGdldF9kaXN0KHBpaSB4LCBwaWkgeSl7CiAgICBpZih4LmZpID09IHkuZmkgfHwgeC5zZWMgPT0geS5zZWMpIHJldHVybiAwOwogICAgcmV0dXJuIG1pbihhYnMoeC5maSAtIHkuZmkpLCBhYnMoeC5zZWMgLSB5LnNlYykpOwp9CgppbnQgd2FsayhwaWkgeCwgcGlpIHkpewogICAgcmV0dXJuIGFicyh4LmZpIC0geS5maSkgKyBhYnMoeC5zZWMgLSB5LnNlYyk7Cn0KCmludCBnZXRfYW5zKHBpaSBwb3MpewogICAgcmV0dXJuIG1pbih7d2Fsayhwb3MsIHsxLCAxfSksCiAgICAgICAgICAgICAgIHdhbGsocG9zLCB7MSwgbn0pLAogICAgICAgICAgICAgICB3YWxrKHBvcywge24sIDF9KSwKICAgICAgICAgICAgICAgd2Fsayhwb3MsIHtuLCBufSl9KTsKfQoKdm9pZCBTb2x2ZSgpewogICAgRk9SKGksIDAsIGsgLSAxKSBhW2ldID0gYVtpICsgMV07CgogICAgbWVtc2V0KGRwLCAweDNmLCBzaXplb2YoZHApKTsKICAgIEZPUihpLCAwLCBrIC0gMSkgZHBbMSA8PCBpXVtpXSA9IGdldF9kaXN0KHN0LCBhW2ldKTsKCiAgICB2ZWN0b3I8aW50PiBwb3Nfb25lOwogICAgRk9SKG1hc2ssIDEsICgxIDw8IGspIC0gMSl7CiAgICAgICAgRk9SKGJpdCwgMCwgayAtIDEpIGlmKG1hc2sgJiAoMSA8PCBiaXQpKXsKICAgICAgICAgICAgcG9zX29uZS5wYihiaXQpOwogICAgICAgIH0KCiAgICAgICAgZm9yKGludCBpIDogcG9zX29uZSkgZm9yKGludCBqIDogcG9zX29uZSkgaWYoaSAhPSBqKXsKICAgICAgICAgICAgZHBbbWFza11baV0gPSBtaW4oZHBbbWFza11baV0sIGRwW21hc2sgXiAoMSA8PCBpKV1bal0gKyBnZXRfZGlzdChhW2pdLCBhW2ldKSk7CiAgICAgICAgfQogICAgICAgIHBvc19vbmUuY2xlYXIoKTsKICAgIH0KCiAgICBpbnQgYW5zID0gZ2V0X2FucyhzdCk7CiAgICBGT1IobWFzaywgMSwgKDEgPDwgaykgLSAxKSBGT1IoaSwgMCwgayAtIDEpewogICAgICAgIGFucyA9IG1pbihhbnMsIGRwW21hc2tdW2ldICsgZ2V0X2FucyhhW2ldKSk7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKfQovL2VuZCBzdWIxMgp9CgpuYW1lc3BhY2Ugc3ViM3sKLy9iZWdpbiBzdWIzCmJvb2wgY2hlY2tfc3ViKCl7CiAgICByZXR1cm4gayA8PSAxMDAwOwp9CgppbnQgZ2V0X2Rpc3QocGlpIHgsIHBpaSB5KXsKICAgIHJldHVybiBtaW4oYWJzKHguZmkgLSB5LmZpKSwgYWJzKHguc2VjIC0geS5zZWMpKTsKfQoKaW50IHdhbGsocGlpIHgsIHBpaSB5KXsKICAgIHJldHVybiBhYnMoeC5maSAtIHkuZmkpICsgYWJzKHguc2VjIC0geS5zZWMpOwp9CgppbnQgZGlzdF9hbnMocGlpIHBvcyl7CiAgICByZXR1cm4gbWluKHt3YWxrKHBvcywgezEsIDF9KSwKICAgICAgICAgICAgICAgd2Fsayhwb3MsIHsxLCBufSksCiAgICAgICAgICAgICAgIHdhbGsocG9zLCB7biwgMX0pLAogICAgICAgICAgICAgICB3YWxrKHBvcywge24sIG59KX0pOwp9Cgp2ZWN0b3I8cGlpPiBnW01BWF9LICsgNV07CmludCBkaXN0W01BWF9LICsgNV07Cgp2b2lkIGRpamtzdHJhKCl7CiAgICBtZW1zZXQoZGlzdCwgMHgzZiwgc2l6ZW9mKGRpc3QpKTsKICAgIHByaW9yaXR5X3F1ZXVlPHBpaSwgdmVjdG9yPHBpaT4sIGdyZWF0ZXI8cGlpPj4gcHE7CgogICAgcHEucHVzaCh7MCwgMH0pOwogICAgZGlzdFswXSA9IDA7CgogICAgd2hpbGUoc3oocHEpKXsKICAgICAgICBpbnQgbGVuID0gcHEudG9wKCkuZmk7CiAgICAgICAgaW50IHUgPSBwcS50b3AoKS5zZWM7CiAgICAgICAgcHEucG9wKCk7CgogICAgICAgIGlmKGxlbiA+IGRpc3RbdV0pIGNvbnRpbnVlOwogICAgICAgIGZvcihwaWkgeCA6IGdbdV0pewogICAgICAgICAgICBpbnQgdiA9IHguZmksIHcgPSB4LnNlYzsKICAgICAgICAgICAgaWYoZGlzdFt2XSA+IGRpc3RbdV0gKyB3KXsKICAgICAgICAgICAgICAgIGRpc3Rbdl0gPSBkaXN0W3VdICsgdzsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2Rpc3Rbdl0sIHZ9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBTb2x2ZSgpewogICAgRk9SKHUsIDEsIGspewogICAgICAgIGdbMF0ucGIoe3UsIGdldF9kaXN0KHN0LCBhW3VdKX0pOwogICAgICAgIGdbdV0ucGIoe2sgKyAxLCBkaXN0X2FucyhhW3VdKX0pOwoKICAgICAgICBGT1IodiwgdSArIDEsIGspewogICAgICAgICAgICBnW3VdLnBiKHt2LCBnZXRfZGlzdChhW3VdLCBhW3ZdKX0pOwogICAgICAgICAgICBnW3ZdLnBiKHt1LCBnZXRfZGlzdChhW3VdLCBhW3ZdKX0pOwogICAgICAgIH0KICAgIH0KCiAgICBnWzBdLnBiKHtrICsgMSwgZGlzdF9hbnMoc3QpfSk7CiAgICBkaWprc3RyYSgpOwogICAgY291dCA8PCBkaXN0W2sgKyAxXTsKfQovL2VuZCBzdWIzCn0KCm5hbWVzcGFjZSBzdWI0ewovL2JlZ2luIHN1YjQKYm9vbCBjaGVja19zdWIoKXsKICAgIHJldHVybiB0cnVlOwp9CgpzdHJ1Y3QgTm9kZXsKICAgIHBpaSBwb3M7CiAgICBpbnQgaWQ7Cn1hcltNQVhfSyArIDVdOwoKaW50IGdldF9kaXN0KHBpaSB4LCBwaWkgeSl7CiAgICByZXR1cm4gbWluKGFicyh4LmZpIC0geS5maSksIGFicyh4LnNlYyAtIHkuc2VjKSk7Cn0KCmludCB3YWxrKHBpaSB4LCBwaWkgeSl7CiAgICByZXR1cm4gYWJzKHguZmkgLSB5LmZpKSArIGFicyh4LnNlYyAtIHkuc2VjKTsKfQoKaW50IGRpc3RfYW5zKHBpaSBwb3MpewogICAgcmV0dXJuIG1pbih7d2Fsayhwb3MsIHsxLCAxfSksCiAgICAgICAgICAgICAgIHdhbGsocG9zLCB7MSwgbn0pLAogICAgICAgICAgICAgICB3YWxrKHBvcywge24sIDF9KSwKICAgICAgICAgICAgICAgd2Fsayhwb3MsIHtuLCBufSl9KTsKfQoKdmVjdG9yPHBpaT4gZ1tNQVhfSyArIDVdOwppbnQgZGlzdFtNQVhfSyArIDVdOwoKdm9pZCBkaWprc3RyYSgpewogICAgbWVtc2V0KGRpc3QsIDB4M2YsIHNpemVvZihkaXN0KSk7CiAgICBwcmlvcml0eV9xdWV1ZTxwaWksIHZlY3RvcjxwaWk+LCBncmVhdGVyPHBpaT4+IHBxOwoKICAgIHBxLnB1c2goezAsIDB9KTsKICAgIGRpc3RbMF0gPSAwOwoKICAgIHdoaWxlKHN6KHBxKSl7CiAgICAgICAgaW50IGxlbiA9IHBxLnRvcCgpLmZpOwogICAgICAgIGludCB1ID0gcHEudG9wKCkuc2VjOwogICAgICAgIHBxLnBvcCgpOwoKICAgICAgICBpZihsZW4gPiBkaXN0W3VdKSBjb250aW51ZTsKICAgICAgICBmb3IocGlpIHggOiBnW3VdKXsKICAgICAgICAgICAgaW50IHYgPSB4LmZpLCB3ID0geC5zZWM7CiAgICAgICAgICAgIGlmKGRpc3Rbdl0gPiBkaXN0W3VdICsgdyl7CiAgICAgICAgICAgICAgICBkaXN0W3ZdID0gZGlzdFt1XSArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkaXN0W3ZdLCB2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmJvb2wgY21wX2RvYyhjb25zdCBOb2RlICZ4LCBjb25zdCBOb2RlICZ5KXsKICAgcmV0dXJuICh4LnBvcy5maSA8IHkucG9zLmZpKTsKfQoKYm9vbCBjbXBfbmdhbmcoY29uc3QgTm9kZSAmeCwgY29uc3QgTm9kZSAmeSl7CiAgICByZXR1cm4gKHgucG9zLnNlYyA8IHkucG9zLnNlYyk7Cn0KCnZvaWQgU29sdmUoKXsKICAgIEZPUihpLCAxLCBrKSBhcltpXSA9IHthW2ldLCBpfTsKCiAgICBGT1IoaSwgMSwgayl7CiAgICAgICAgZ1swXS5wYih7YXJbaV0uaWQsIGdldF9kaXN0KHN0LCBhcltpXS5wb3MpfSk7CiAgICAgICAgZ1thcltpXS5pZF0ucGIoe2sgKyAxLCBkaXN0X2FucyhhcltpXS5wb3MpfSk7CiAgICB9CgoKICAgIHNvcnQoYXIgKyAxLCBhciArIGsgKyAxLCBjbXBfZG9jKTsKICAgIEZPUihpLCAxLCBrIC0gMSl7CiAgICAgICAgZ1thcltpXS5pZF0ucGIoe2FyW2kgKyAxXS5pZCwgZ2V0X2Rpc3QoYXJbaV0ucG9zLCBhcltpICsgMV0ucG9zKX0pOwogICAgICAgIGdbYXJbaSArIDFdLmlkXS5wYih7YXJbaV0uaWQsIGdldF9kaXN0KGFyW2ldLnBvcywgYXJbaSArIDFdLnBvcyl9KTsKICAgIH0KCiAgICBzb3J0KGFyICsgMSwgYXIgKyBrICsgMSwgY21wX25nYW5nKTsKICAgIEZPUihpLCAxLCBrIC0gMSl7CiAgICAgICAgZ1thcltpXS5pZF0ucGIoe2FyW2kgKyAxXS5pZCwgZ2V0X2Rpc3QoYXJbaV0ucG9zLCBhcltpICsgMV0ucG9zKX0pOwogICAgICAgIGdbYXJbaSArIDFdLmlkXS5wYih7YXJbaV0uaWQsIGdldF9kaXN0KGFyW2ldLnBvcywgYXJbaSArIDFdLnBvcyl9KTsKICAgIH0KCiAgICBnWzBdLnBiKHtrICsgMSwgZGlzdF9hbnMoc3QpfSk7CiAgICBkaWprc3RyYSgpOwogICAgY291dCA8PCBkaXN0W2sgKyAxXTsKfQovL2VuZCBzdWI0Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBmcmVvcGVuKCJHQU1FLklOUCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3BlbigiR0FNRS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBJbnB1dCgpOwoKICAgIGlmKHN1YjEyOjpjaGVja19zdWIoKSkgcmV0dXJuIHN1YjEyOjpTb2x2ZSgpLCAwOwogICAgaWYoc3ViMzo6Y2hlY2tfc3ViKCkpIHJldHVybiBzdWIzOjpTb2x2ZSgpLCAwOwogICAgaWYoc3ViNDo6Y2hlY2tfc3ViKCkpIHJldHVybiBzdWI0OjpTb2x2ZSgpLCAwOwoKICAgIHJldHVybiAwOwp9Cg==