讨论一下传送门的情况即可,如下图
红色为两个传送门,黑色为起点和终点
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
//由于使用传送门的时候,我要尽可能选则和当前点近的传送门“正所谓就近原则”
if(a>b)swap(a,b); //由于起点和终点不一定谁大谁小,我设a是两个点在坐标轴位置较小的那个
if(c>d)swap(c,d); //设c为两个传送门在坐标轴位置较小的那个
cout<<min(abs(a-b),abs(a-c)+abs(b-d));
return 0;
}