Squirrel Liss loves nuts. There are *n* trees (numbered 1 to *n* from west to east) along a street and there is a delicious nut on the top of each tree. The height of the tree *i* is *h*<sub class="lower-index">*i*</sub>. Liss wants to eat all nuts.

Now Liss is on the root of the tree with the number 1. In one second Liss can perform one of the following actions:
 -  Walk up or down one unit on a tree. -  Eat a nut on the top of the current tree. -  Jump to the next tree. In this action the height of Liss doesn't change. More formally, when Liss is at height *h* of the tree *i* (1 ≤ *i* ≤ *n* - 1), she jumps to height *h* of the tree *i* + 1. This action can't be performed if *h* &gt; *h*<sub class="lower-index">*i* + 1</sub>. 
Compute the minimal time (in seconds) required to eat all nuts.
The first line contains an integer *n* (1  ≤  *n* ≤ 10<sup class="upper-index">5</sup>) — the number of trees.

Next *n* lines contains the height of trees: *i*-th line contains an integer *h*<sub class="lower-index">*i*</sub> (1 ≤ *h*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">4</sup>) — the height of the tree with the number *i*.
n=int(input())
r1,c1=map(int,input().split())
r2,c2=map(int,input().split())
g=[None]*n
for i in range(n):
    g[i]=input()
# print(g)
vis=[[0 for  j in range(n)]for i in range(n)]
def dfs(r,c,store):
    vis[r][c]=1
    store.append((r,c))
    if r+1<n and g[r+1][c]=='0' and vis[r+1][c]==0:
        dfs(r+1,c,store)
    if c+1<n and g[r][c+1]=='0' and vis[r][c+1]==0:
        dfs(r,c+1,store)
    if r-1>=0 and g[r-1][c]=='0' and vis[r-1][c]==0:
        dfs(r-1,c,store)
    if c-1>=0 and g[r][c-1]=='0' and vis[r][c-1]==0:
        dfs(r,c-1,store)
store1=[]
store2=[]
dfs(r1-1,c1-1,store1)
dfs(r2-1,c2-1,store2)
ans=float('inf')
for i,j in store1:
    for k,l in store2:
        ans=min((i-k)**2 + (j-l)**2,ans)
print(ans)