--相手と同じ手を出せば必ず引き分けにはなる。
--p,gを出すトータルが同じとき、出すタイミングによって点数が変わるかどうかについては、
--これはかわらない。こちらの出す手の任意の二箇所を入れ替えても、点数の変動は相殺してゼロ。
--従って、p,gを出す回数を固定したら、それは履歴に関する出し手制約を満たしていればいつ出しても点数はかわらない。
--つまり勝てるときに勝っておいて、そのせいで後で負けても、トータルに支障はない。
--ということで貪欲法で行く。相手の出方を見ながら、こちらがより高い点を獲得できる手が出せるならそれを出す。


main::IO()
main = do
  enemy<-getLine
  print (solver enemy)

solver ::String -> Int
solver cs = let (_,_,score) = foldl decide_result (0,0,0) cs in score

decide_result:: (Int,Int,Int) -> Char -> (Int,Int,Int)
decide_result (p,g,score) hand
          |(hand=='g')&&(p <g) = (p+1,g,score+1)
          |(hand=='g')&&(p>=g) = (p,g+1,score)
          |(hand=='p')&&(p <g) = (p+1,g,score)
          |(hand=='p')&&(p>=g) = (p,g+1,score-1)
