import qualified Data.List as L
import qualified Data.Map as Map

getInts :: IO [Integer]
getInts = map read . words <$> getLine

main :: IO()
main = do
  n <- getLine
  a <- getInts
  let aList = zipWith (-) a [1..]
  putStrLn $ show $ slv aList

slv :: [Integer] -> Integer
slv aList = minimum [slv0, slv1, slv2, slv3, slv4, slv5, slv6, slv7]
  where slv0 = sum $ map (\x -> abs(x - (roundUpOn5 (average aList)))) aList
        slv1 = sum $ map (\x -> abs(x - 1 - (roundUpOn5 (average aList)))) aList
        slv2 = sum $ map (\x -> abs(x + 1 - (roundUpOn5 (average aList)))) aList
        slv3 = sum $ map (\x -> abs(x - maximum aList)) aList
        slv4 = sum $ map (\x -> abs(x - minimum aList)) aList
        slv5 = sum $ map (\x -> abs(x - (roundUpOn5 (var aList)))) aList
        slv6 = sum $ map (\x -> abs(x - 1 - (roundUpOn5 (var aList)))) aList
        slv7 = sum $ map (\x -> abs(x + 1 - (roundUpOn5 (var aList)))) aList

var :: [Integer] -> Double
var a = aveA2 - (aveA * aveA)
  where aveA = average a
        aveA2 = average2 a

average :: [Integer] -> Double 
average a = (realToFrac (sum a)) / (realToFrac (length a))

average2 :: [Integer] -> Double
average2 a = (realToFrac (sum [x*x | x <- a])) / (realToFrac (length a))

roundUpOn5 :: (RealFrac a, Integral b) => a -> b
roundUpOn5 x
  | n <= -0.5 = m - 1
  | n >= 0.5 = m + 1
  | otherwise = m
  where (m, n) = properFraction x