/*
迷宫最短路径 问题
*/
using namespace std
struct Node{
int x, y
Node(int x,int y) {
this->x = x
this->y = y
}
}
const int N = 15
int map[9][9]= {1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,1,0,1,
1,0,0,1,1,0,0,0,1,
1,0,1,0,1,1,0,1,1,
1,0,0,0,0,1,0,0,1,
1,1,0,1,0,1,0,0,1,
1,1,0,1,0,1,0,0,1,
1,1,0,1,0,0,0,0,1,
1,1,1,1,1,1,1,1,1}
int d[N][N], book[N][N]
int next[][2] = {{-1,0},{0,1},{1,0},{0,-1}}
int endx, endy
int n, m
void bfs(int x,int y)
int main() {
int beginx, beginy
while (cin >> beginx >> beginy) {
cin>> endx >> endy
memset(book,0,sizeof(book))
memset(d,0,sizeof(d))
n = 8, m = 8
bfs(beginx,beginy)
cout << d[endx][endy] << endl
}
}
void bfs(int x,int y) {
queue<Node> p
Node q(x,y)
p.push(q)
d[x][y] = 0
book[x][y] = 1
while (!p.empty()) {
q = p.front()
p.pop()
if (q.x == endx && q.y == endy) return
int v, u
for (int i = 0
v = q.x + next[i][0]
u = q.y + next[i][1]
if (v >= 0 && v <= n && u >= 0 && u <= m && book[v][u] == 0 && map[v][u] == 0) {
book[v][u] = 1
d[v][u] = d[q.x][q.y] + 1
// q = Node(v,u)
p.push(Node(v,u))
}
}
}
return
}