アイヅ運送では倉庫番ロボットを開発しています。アイヅ運送の倉庫では、以下の平面図のように倉庫内の地点を座標(x,y)によって管理しています。倉庫内には、荷物が管理しやすいように、底面が正方形の棚を規則的に配置しています。倉庫内の地点の座標のペアで棚の南西隅と北東隅の位置を表すと、棚は(0,0)と(1,1)、(2,0)と(3,1)、…、(0,2)と(1,3)、(2,2)と(3,3)、…、というように、倉庫の端から端まで、0以上の整数iとjを使って(2i,2j)と(2i+1,2j+1)で表される正方形の領域を占めるように置かれています。
倉庫番ロボットは、棚のないところでは自由に動くことができます。棚が置かれている領域内を通り抜けることはできませんが、サイズが小さいので棚の領域の境界上を通ることはできます。例えば、地点 (0,0)から地点(4,3)へ最短距離で向かうには、以下のように動くことができます。
倉庫番ロボット開発部のあなたは、ロボットに目標地点までの最短距離を計算する機能を付けようと考えています。
倉庫番ロボットが現在いる地点と、目標の地点が与えられたとき、ロボットが目標の地点に到達するために移動する最短距離を出力するプログラムを作成せよ。
入力は以下の形式で与えられる。
$x_0$ $y_0$ $x_1$ $y_1$
1行に倉庫番ロボットが現在いる地点の座標$x_0$,$y_0$ ($0 \leq x_0,y_0 \leq 300$)と、目標の地点の座標$x_1$,$y_1$ ($0 \leq x_1,y_1 \leq 300$)が、すべて整数で与えられる。倉庫は与えられる座標の地点がすべて存在するような大きさの長方形であると考えてよい。ロボットが現在いる地点と目標の地点の座標は異なる($x_0 \ne x_1$または$y_0 \ne y_1$)。
ロボットが目標の地点に到達するための最短距離を、1行に実数で出力する。ただし、誤差がプラスマイナス 0.00001 を超えてはならない。
0 0 4 3
5.24264069
7 1 1 6
7.89292223
0 2 5 2
5