{-
?????????: Area of Polygon
URL: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0079
?????°
19:17 JOI??¬?????§???????£???§????????????Dijkstra??????????£???§????????????????????\????????°????????¨C++?????????????????\???
19:18 ??¨???????????¨??§Haskell??§?????¢????????????

-}
import Data.Complex
import Control.Monad
import Control.Applicative
import System.IO

a `dot` b = realPart $ conjugate a * b
a `cross` b = imagPart $ conjugate a * b

main :: IO ()
main = do
 str <- getContents
 let cs = map lire $ lines str
 print $ (/2) $ abs $ sum $ zipWith cross (last cs:cs) cs


-- last cs : cs = [e,a,b,c,d,e]
--           cs = [a,b,c,d,e]
-- zipWith cross????????¨?????????

lire :: String -> Complex Double
lire str =
 let (a,',':b) = break (==',') str
 in (read a :+ read b)