import Control.Applicative ((<$>)) import Text.Printf (printf) type Point a = (a, a) manhattanDist :: Integral a => Point a -> Point a -> a manhattanDist (x1, y1) (x2, y2) = abs (x2 - x1) + abs (y2 - y1) minTime :: (Integral a, RealFloat b) => Point a -> Point a -> b minTime p1 p2 = fromIntegral (manhattanDist p1 p2) / 2.0 tuplify2 :: [a] -> (a, a) tuplify2 [x, y] = (x, y) tuplify2 _ = error "Length of the list must be two" main :: IO () main = do p1 <- tuplify2 . fmap read . words <$> getLine :: IO (Point Int) p2 <- tuplify2 . fmap read . words <$> getLine :: IO (Point Int) printf "%.10f\n" (minTime p1 p2 :: Double)