{-# OPTIONS_GHC -Wno-unused-imports #-} {-# OPTIONS_GHC -Wno-unused-top-binds #-} {-# OPTIONS_GHC -Wno-missing-signatures #-} import Control.Monad import Control.Monad.State.Strict import Control.Applicative import Data.Bool import Data.Function import Data.List import Data.Ord import Data.List.Split -- import System.IO (hFlush, stdout) import Debug.Trace input = getLine :: IO String ii = readLn :: IO Int li = map read . words <$> getLine :: IO [Int] printYn b = putStrLn $ bool "No" "Yes" b pairwise :: [a] -> [(a, a)] pairwise xs = zip xs (drop 1 xs) countIf f = length . filter f minmax (x:xs) = foldl' (\(mi, ma) x -> (min mi x, max ma x)) (x, x) xs solve ('p':'a':'i':'n':xs) k = max (k-1) (solve xs 0) solve ('p':'o':'n':xs) k = solve xs (k+1) solve (_:xs) k = solve xs k solve [] _ = 0 main :: IO () main = do s <- input let ans = solve s 0 print $ if ans == 0 then -1 else ans