#include<bits/stdc++.h>
using namespace std;
const int N=25;
int mp[N][N];
int n;
int minlen=0x3f3f3f3f;
int res;
int x,y;
pair<int,int> pos;
pair<int,int> mb[N];
bool vis[N];

void dfs(int num)
{
	if(num==n)
	{
		res+=abs(x-pos.first)+abs(y-pos.second);
		minlen=min(minlen,res);
		res-=abs(x-pos.first)+abs(y-pos.second);
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(!vis[i])
		{
			pair<int,int> tmp=pos;
			vis[i]=true;
			res+=abs(mb[i].first-pos.first)+abs(mb[i].second-pos.second);
			pos=mb[i];
			dfs(num+1);
			pos=tmp;
			res-=abs(mb[i].first-pos.first)+abs(mb[i].second-pos.second);
			vis[i]=false;
		}
	}
	
}

int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		minlen=0x3f3f3f3f;
		res=0;
		int l,w;
		cin>>l>>w;

		cin>>x>>y;
		pos={x,y};
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>mb[i].first>>mb[i].second;
		}
		memset(vis,0,sizeof vis);
		dfs(0);
		cout<<"The shortest path has length "<<minlen<<endl;
	}
	
	return 0;
}