#arc062b. [arc062_b]AtCoDeer and Rock-Paper

[arc062_b]AtCoDeer and Rock-Paper

题目描述

AtCoDeer 是一只鹿,他的朋友 TopCoDeer 正在玩一个游戏。这个游戏有 NN 个回合,在每个回合中,每个玩家将选择两种手势中的一种,即“石头”和“剪刀”,按照以下条件进行选择:

(※) 每个回合结束后,(玩家选择剪刀的次数)≤(玩家选择石头的次数)。

每个玩家的得分由(赢得的回合数)-(失去的回合数)计算,其中每个回合的结果由石头-剪刀-布的规则决定。

(对于不熟悉石头-剪刀-布的人来说:如果一方选择石头,另一方选择剪刀,则后者获胜,前者失败。如果两方选择相同的手势,则是平局,双方都不会赢得或失去回合。)

凭借他的超能力,AtCoDeer 能够提前预知 TopCoDeer 在每个回合中会选择的手势。请为 AtCoDeer 每个回合选择手势,以使 AtCoDeer 的得分最大化。

TopCoDeer 在每个回合中选择的手势由字符串 ss 给出。如果 ss 的第 ii 个字符 (1iN)(1≦i≦N)g,则 TopCoDeer 在第 ii 个回合中选择石头。类似地,如果 ss 的第 ii 个字符 (1iN)(1≦i≦N)p,则 TopCoDeer 在第 ii 个回合中选择剪刀。

约束条件

  • 1N1051≦N≦10^5
  • N=sN=|s|
  • ss 中的每个字符要么是 g,要么是 p
  • ss 表示的手势满足条件 (※)。

输入

从标准输入读入输入数据,输入格式如下:

ss

输出

输出 AtCoDeer 可能获得的最高得分。


示例输入1

gpg

示例输出1

0

在每个回合中选择与对手相同的手势会导致得分为 00,这是可能的最高得分。


示例输入2

ggppgggpgg

示例输出2

2

例如,按照以下顺序选择手势:石头、剪刀、石头、剪刀、石头、石头、剪刀、剪刀、石头、剪刀。这种策略赢得了三次胜利,并遭受了一次失败,最终得分为 22,这是可能的最高得分。