from collections import deque

def solution(rectangle, characterX, characterY, itemX, itemY):
    answer = 0
    m = [[0]*102 for i in range(102)]
    for i in rectangle :
        ax,ay,bx,by = i
        ax,ay,bx,by = 2*ax,2*ay,2*bx,2*by
        for j in range(ax, bx+1) :
            for k in range(ay, by + 1) :
                m[j][k] = 1
                
    for i in rectangle :
        ax,ay,bx,by = i
        ax,ay,bx,by = 2*ax,2*ay,2*bx,2*by
        for j in range(ax+1, bx) :
            for k in range(ay+1, by) :
                m[j][k] = 0
                
    queue = deque([[2* characterX, 2*characterY,0]])
    m[2*characterX][2*characterY] = 0
    point = [(-1, 0), (1,0), (0,1),(0,-1)]
    while queue :
        x,y,n = queue.popleft()
        answer = n
        if x == 2*itemX and y == 2*itemY : break
        for ix,iy in point :
            if m[x+ix][y+iy] == 1 : 
                m[x+ix][y+iy] = 0
                queue.append([x+ix,y+iy,n+1])
                
    return answer // 2