#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define int LL
struct Termite_OverMind{
int min_y;
int max_y;
int min_x;
int max_x;
}a[int(1e5+5)];
int f[int(1e5+5)];
int n,m;
int search(int x){
if(f[x]==x)return x;
return f[x]=search(f[x]);
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
f[i]=i;
a[i].min_x=x;
a[i].max_x=x;
a[i].min_y=y;
a[i].max_y=y;
}
for(int i=1;i<=m;i++){
int A,B;
cin>>A>>B;
f[search(A)]=search(B);
swap(A,B);
a[A].min_x=min(a[A].min_x,a[B].min_x);
a[A].max_x=max(a[A].max_x,a[B].max_x);
a[A].min_y=min(a[A].min_y,a[B].min_y);
a[A].max_y=max(a[A].max_y,a[B].max_y);
}
LL ans=-1,cnt;
for(int i=1;i<=n;i++){
if(f[i]==i){
int xxx=a[i].max_x-a[i].min_x;
int yyy=a[i].max_y-a[i].min_y;
cnt=LL(LL(xxx)+LL(yyy));
if(ans==-1)ans=cnt;
else ans=min(ans,cnt);
}
}
cout<<ans*2<<endl;
return 0;
}