Parallelepiped walk

Program

WALK.C, WALK.PAS, WALK.CPP

Two points A (x1, y1, z1) and B (x2, y2, z2) are placed on the surface of parallelepiped P = {(x, y, z): 0<=x<=L, 0<=y<=W, 0<=z <=H} with L*W*H dimensions (see figure). These two points can be linked with various curves lying on the surface of P. You are to find out the square of the shortest curve length.

Parallelepiped dimensions L, W, H and coordinates of the points are integers, 0<=L,W,H<=1000.

Input data

Input data file WALK.IN contains several cases. Each case contains (in indicated order): L, W, H, x1, y1, z1, x2, y2, z2. The numbers are separated with spaces and end-of-line characters. Cases are separated with number 1999.

Output data

Output data file WALK.OUT should contain one line with the square of the shortest curve length between points A and B on the surface of P for each case.

Input data file example:
5 5 2
3 1 2
3 5 0
1999

Output data file for our example:
36