import Control.Monad
import Data.List

main=do
    _<-getLine
    (a:as)<-map read.words<$>getLine::IO[Int]
    print $ if a /= 0
        then
            min (sum.snd $ mapAccumL f a as)
              ((+) (1 + (abs a)) $ sum $ snd $ mapAccumL f (a`div`(abs a)*(-1)) as)
        else
            min ((+) 1 $ sum $ snd $ mapAccumL f 1 as) ((+) 1 $ sum $ snd $ mapAccumL f (-1) as)


f a b
    | signum a * signum (a+b) < 0 = (a+b,0)
    | a < 0 = (1, 1-(a+b))
    | otherwise = ((-1), 1+(a+b))
