Remember to first calculate the number of steps that each of the four people can take and cannot take to walk on the monster.
Then enumerate each person as the one who can step on the monster, and the others cannot step on it.
Then find the minimum value and that will be the answer.
//
// GGGGGGGGGGGGG CCCCCCCCCCCCC AAA
// GGG::::::::::::G CCC::::::::::::C A:::A
// GG:::::::::::::::G CC:::::::::::::::C A:::::A
// G:::::GGGGGGGG::::G C:::::CCCCCCCC::::C A:::::::A
// G:::::G GGGGGG C:::::C CCCCCC A:::::::::A
//G:::::G C:::::C A:::::A:::::A
//G:::::G C:::::C A:::::A A:::::A
//G:::::G GGGGGGGGGGC:::::C A:::::A A:::::A
//G:::::G G::::::::GC:::::C A:::::A A:::::A
//G:::::G GGGGG::::GC:::::C A:::::AAAAAAAAA:::::A
//G:::::G G::::GC:::::C A:::::::::::::::::::::A
// G:::::G G::::G C:::::C CCCCCC A:::::AAAAAAAAAAAAA:::::A
// G:::::GGGGGGGG::::G C:::::CCCCCCCC::::C A:::::A A:::::A
// GG:::::::::::::::G CC:::::::::::::::C A:::::A A:::::A
// GGG::::::GGG:::G CCC::::::::::::C A:::::A A:::::A
// GGGGGG GGGG CCCCCCCCCCCCCAAAAAAA AAAAAAA
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <climits>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <cctype>
#include <utility>
#include <ctime>
using namespace std;
#ifdef DEBUG
#define VAR(a,b) decltype(b) a=(b)
#define debug(...) printf("DEBUG: "),printf(\_\_VA\_ARGS\_\_)
#define gettime() end\_time=clock();printf("now running time is %.7f\\n",(float)(end\_time - start\_time)/CLOCKS\_PER\_SEC);
#else
#define VAR(a,b) \_\_typeof(b) a=(b)
#define debug(...)
#define gettime()
#endif
typedef unsigned int uint;
typedef long long int Int;
typedef unsigned long long int UInt;
#define Set(a,s) memset(a,s,sizeof(a))
#define Write(w) freopen(w,"w",stdout)
#define Read(r) freopen(r,"r",stdin)
#define Pln() printf("\\n")
#define I\_de(x,n)for(int i=0;i<n;i++)printf("%d ",x\[i\]);Pln()
#define De(x)printf(#x"%d\\n",x)
#define For(i,x)for(int i=0;i<x;i++)
#define CON(x,y) x##y
#define Pmz(dp,nx,ny)for(int hty=0;hty<ny;hty++){for(int htx=0;htx<nx;htx++){\\
printf("%d ",dp\[htx\]\[hty\]);}Pln();}
#define M 20
#define PII pair<int,int\>
#define PB push\_back
#define oo INT\_MAX
#define Set\_oo 0x3f
#define FOR(a,b) for(VAR(a,(b).begin());a!=(b).end();++a)
#define eps 1e-6
#define X first
#define Y second
clock\_t start\_time=clock(), end\_time;
bool xdy(double x,double y){return x>y+eps;}
bool xddy(double x,double y){return x>y-eps;}
bool xcy(double x,double y){return x<y-eps;}
bool xcdy(double x,double y){return x<y+eps;}
int min3(int x,int y,int z){
int tmp=min(x,y);
return min(tmp,z);
}
int max3(int x,int y,int z){
int tmp=max(x,y);
return max(tmp,z);
}
char tit\[10005\];
int nx,ny;
int kx\[4\],ky\[4\];
int mx,my;
int dx\[\]={2,1,-1,-2,-2,-1,1,2};
int dy\[\]={-1,-2,-2,-1,1,2,2,1};
int dis\[M\]\[M\]\[10\];
int cdis\[M\]\[M\]\[10\];
void init(){
fill(&dis\[0\]\[0\]\[0\],&dis\[M-1\]\[M-1\]\[9\],oo);
for(int k=0;k<4;k++){
queue<PII> q;
q.push(PII(kx\[k\],ky\[k\]));
dis\[kx\[k\]\]\[ky\[k\]\]\[k\]=0;
while(!q.empty()){
int x=q.front().X;
int y=q.front().Y;
q.pop();
for(int i=0;i<8;i++){
int nex=x+dx\[i\],ney=y+dy\[i\];
if(nex>=nx||nex<0||ney>=ny||ney<0)continue;
if(nex==mx&&ney==my)continue;
if(dis\[x\]\[y\]\[k\]+1<dis\[nex\]\[ney\]\[k\]){
dis\[nex\]\[ney\]\[k\]=dis\[x\]\[y\]\[k\]+1;
q.push(PII(nex,ney));
}
}
}
}
fill(&cdis\[0\]\[0\]\[0\],&cdis\[M-1\]\[M-1\]\[9\],oo);
for(int k=0;k<4;k++){
queue<PII> q;
q.push(PII(kx\[k\],ky\[k\]));
cdis\[kx\[k\]\]\[ky\[k\]\]\[k\]=0;
while(!q.empty()){
int x=q.front().X;
int y=q.front().Y;
q.pop();
for(int i=0;i<8;i++){
int nex=x+dx\[i\],ney=y+dy\[i\];
if(nex>=nx||nex<0||ney>=ny||ney<0)continue;
if(cdis\[x\]\[y\]\[k\]+1<cdis\[nex\]\[ney\]\[k\]){
cdis\[nex\]\[ney\]\[k\]=cdis\[x\]\[y\]\[k\]+1;
q.push(PII(nex,ney));
}
}
}
}
}
int check(int x,int y){
int minans=oo;
for(int i=0;i<4;i++){
int ans=0;
for(int j=0;j<4;j++){
if(j==i){
if(cdis\[x\]\[y\]\[j\]==oo){
ans=oo;
break;
}
ans+=cdis\[x\]\[y\]\[j\];
}
else{
if(dis\[x\]\[y\]\[j\]==oo){
ans=oo;
break;
}
ans+=dis\[x\]\[y\]\[j\];
}
}
minans=min(ans,minans);
}
return minans;
}
int main() {
ios\_base::sync\_with\_stdio(0);
while(~scanf("%s",tit)){
scanf("%d%d",&ny,&nx);
for(int i=0;i<4;i++){
scanf("%d%d",&ky\[i\],&kx\[i\]);
kx\[i\]--;ky\[i\]--;
}scanf("%d%d",&my,&mx);
mx--;my--;
init();
int minans=oo;
for(int i=0;i<ny;i++){
for(int j=0;j<nx;j++){
if(mx==j&&my==i)continue;
minans=min(minans,check(j,i));
}
}
puts(tit);
if(minans==oo){
printf("Meeting is impossible.\\n");
}else printf("Minimum time required is %d minutes.\\n",minans);
}
}