没过样例……
#include<bits/stdc++.h>
typedef long long ll;
#define pb(x) push_back(x)
#define pf(x) push_front(x)
#define eb(x) emplace_back(x)
#define ef(x) emplace_front(x)
#define sz(v) ((int)(v).size())
#define file_r(x) freopen(x, "r", stdin)
#define file_w(x) freopen(x, "w", stdout)
#define lowbit(x) ((x) & (-x))
#define rep(i, n) for (int i = 1; i <= (n); i++)
#define repd(i, n) for (int i = (n - 1); i >= 0; i--)
#define in1(n) scanf("%d",&n)
#define in2(n, m) scanf("%d%d",&n,&m)
#define in3(x, y, z) scanf("%d%d",&x,&y,&z)
#define sort_asc(c) sort(c.begin(), c.end())
#define iter(it, v) for (auto it = v.begin(); it != v.end(); ++ it)
using namespace std;
ll sx,sy,nx,ny,minn=1000000;
bool vis[101][101];
void dfs(int i,int j,int step)
{
if(i<1||i>100||j<1||j>100||step>minn||!vis[i][j])
return;
if(i==1&&j==1)
minn=step;
vis[i][j]=false;
dfs(i-2,j-1,step+1);
dfs(i-2,j-2,step+1);
dfs(i-1,j-2,step+1);
dfs(i+1,j-2,step+1);
dfs(i+2,j-2,step+1);
dfs(i+2,j-1,step+1);
dfs(i+2,j+1,step+1);
dfs(i+1,j+2,step+1);
dfs(i+1,j-2,step+1);
dfs(i-1,j+2,step+1);
dfs(i-2,j+2,step+1);
dfs(i-2,j+1,step+1);
vis[i][j]==true;
}
int main()
{
rep(i,2)
{
memset(vis,true,sizeof(vis));
in2(sx,sy);
dfs(sx,sy,0);
cout<<minn<<endl;
}
return 0;
}