In AD 3456, the earth is too small for hundreds of billions of people to live in peace. Interstellar Colonization Project with Cubes (ICPC) is a project that tries to move people on the earth to space colonies to ameliorate the problem. ICPC obtained funding from governments and manufactured space colonies very quickly and at low cost using prefabricated cubic blocks.

The largest colony looks like a Rubik's cube. It consists of 3 × 3 × 3 cubic blocks (Figure J.1A). Smaller colonies miss some of the blocks in the largest colony.

When we manufacture a colony with multiple cubic blocks, we begin with a single block. Then we iteratively glue a next block to existing blocks in a way that faces of them match exactly. Every pair of touched faces is glued.

Figure J.1: Example of the largest colony and a smaller colony

However, just before the first launch, we found a design flaw with the colonies. We need to add a cable to connect two points on the surface of each colony, but we cannot change the inside of the prefabricated blocks in a short time. Therefore we decided to attach a cable on the surface of each colony. If a part of the cable is not on the surface, it would be sheared off during the launch, so we have to put the whole cable on the surface. We would like to minimize the lengths of the cables due to budget constraints. The dashed line in Figure J.1B is such an example.

Write a program that, given the shape of a colony and a pair of points on its surface, calculates the length of the shortest possible cable for that colony.

The input contains a series of datasets. Each dataset describes a single colony and the pair of the points for the colony in the following format.

*x*_{1} *y*_{1} *z*_{1} *x*_{2} *y*_{2} *z*_{2}

*b*_{0,0,0}*b*_{1,0,0}*b*_{2,0,0}

*b*_{0,1,0}*b*_{1,1,0}*b*_{2,1,0}

*b*_{0,2,0}*b*_{1,2,0}*b*_{2,2,0}

*b*_{0,0,1}*b*_{1,0,1}*b*_{2,0,1}

*b*_{0,1,1}*b*_{1,1,1}*b*_{2,1,1}

*b*_{0,2,1}*b*_{1,2,1}*b*_{2,2,1}

*b*_{0,0,2}*b*_{1,0,2}*b*_{2,0,2}

*b*_{0,1,2}*b*_{1,1,2}*b*_{2,1,2}

*b*_{0,2,2}*b*_{1,2,2}*b*_{2,2,2}

(*x*_{1}, *y*_{1}, *z*_{1}) and (*x*_{2}, *y*_{2}, *z*_{2}) are the two distinct points on the surface of the colony, where *x*_{1}, *x*_{2}, *y*_{1}, *y*_{2}, *z*_{1}, *z*_{2} are integers that satisfy 0 ≤ *x*_{1}, *x*_{2}, *y*_{1}, *y*_{2}, *z*_{1}, *z*_{2} ≤ 3. *b _{i,j,k}* is '#' when there is a cubic block whose two diagonal vertices are (

You can assume that there is no colony consisting of all 3 × 3 × 3 cubes but the center cube.

Six zeros terminate the input.

Figure J.2: Dashed lines are the shortest cables. Some blocks are shown partially transparent for illustration.

For each dataset, output a line containing the length of the shortest cable that connects the two given points. We accept errors less than 0.0001. You can assume that given two points can be connected by a cable.

0 0 0 3 3 3 ### ### ### ### ### ### ### ### ### 3 3 0 0 0 3 #.. ### ### ### ### ### #.# ### ### 0 0 2 2 2 2 ... ... ... .#. #.. ... ##. ##. ... 0 1 2 2 1 1 ... ... ... .#. #.. ... ##. ##. ... 3 2 0 2 3 2 ### ..# ... ..# ... .#. ..# ..# .## 0 0 0 0 0 0

6.70820393249936941515 6.47870866461907457534 2.82842712474619029095 2.23606797749978980505 2.82842712474619029095

Source: ACM International Collegiate Programming Contest
, Asia Regional Tokyo, Tokyo, Japan, 2012-11-18

http://www.cs.titech.ac.jp/icpc2012/index-e.html

http://www.cs.titech.ac.jp/icpc2012/index-e.html