#include <iostream>
#include <queue>
#define MAX 110
using namespace std;
typedef pair<int,int> pii;
int dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={1,0,-1,1,-1,1,0,-1},dist[MAX][MAX];
bool g[MAX][MAX],visited[MAX][MAX];
int bfs(const int start,const int end){
queue<pii>q;
size_t i;
int nowx,nowy,nextx,nexty;
q.push(pii(start,start));
while(!q.empty()){
nowy=q.front().first;
nowx=q.front().second;
q.pop();
if(nowy==end||nowx==end) return dist[nowy][nowx];
visited[nowy][nowx]=true;
for(i=0;i<8;++i){
nexty=nowy+dy[i];
nextx=nowx+dx[i];
if(!visited[nexty][nextx]) continue;
else if(g[nexty][nextx]) dist[nexty][nextx]=dist[nowy][nowx]+1;
q.push(pii(nexty,nextx));
}
}
return -1;
}
int main(void){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int n,x,y,m,a,b;
cin>>n>>x>>y>>m;
while(m--){
cin>>a>>b;
g[a][b]=g[b][a]=true;
}
cout<<bfs(x,y)<<'\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNkZWZpbmUgTUFYIDExMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwoKaW50IGR4WzhdPXstMSwtMSwtMSwwLDAsMSwxLDF9LGR5WzhdPXsxLDAsLTEsMSwtMSwxLDAsLTF9LGRpc3RbTUFYXVtNQVhdOwpib29sIGdbTUFYXVtNQVhdLHZpc2l0ZWRbTUFYXVtNQVhdOwppbnQgYmZzKGNvbnN0IGludCBzdGFydCxjb25zdCBpbnQgZW5kKXsKICAgIHF1ZXVlPHBpaT5xOwogICAgc2l6ZV90IGk7CiAgICBpbnQgbm93eCxub3d5LG5leHR4LG5leHR5OwogICAgcS5wdXNoKHBpaShzdGFydCxzdGFydCkpOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgbm93eT1xLmZyb250KCkuZmlyc3Q7CiAgICAgICAgbm93eD1xLmZyb250KCkuc2Vjb25kOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgaWYobm93eT09ZW5kfHxub3d4PT1lbmQpIHJldHVybiBkaXN0W25vd3ldW25vd3hdOwogICAgICAgIHZpc2l0ZWRbbm93eV1bbm93eF09dHJ1ZTsKICAgICAgICBmb3IoaT0wO2k8ODsrK2kpewogICAgICAgICAgICBuZXh0eT1ub3d5K2R5W2ldOwogICAgICAgICAgICBuZXh0eD1ub3d4K2R4W2ldOwogICAgICAgICAgICBpZighdmlzaXRlZFtuZXh0eV1bbmV4dHhdKSBjb250aW51ZTsKICAgICAgICAgICAgZWxzZSBpZihnW25leHR5XVtuZXh0eF0pIGRpc3RbbmV4dHldW25leHR4XT1kaXN0W25vd3ldW25vd3hdKzE7CiAgICAgICAgICAgIHEucHVzaChwaWkobmV4dHksbmV4dHgpKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gLTE7Cn0KaW50IG1haW4odm9pZCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksY2luLnRpZSgwKSxjb3V0LnRpZSgwKTsKICAgIGludCBuLHgseSxtLGEsYjsKICAgIGNpbj4+bj4+eD4+eT4+bTsKICAgIHdoaWxlKG0tLSl7CiAgICAgICAgY2luPj5hPj5iOwogICAgICAgIGdbYV1bYl09Z1tiXVthXT10cnVlOwogICAgfQogICAgY291dDw8YmZzKHgseSk8PCdcbic7CiAgICByZXR1cm4gMDsKfQ==