Fedor 是一位狂热的旅行者。由于他的爱好,他收集了来自世界各地的大量明信片。每张明信片的正面都有独特的图案,背面则有一些地址信息和文字。
在 Fedor 家举行的一次聚会上,他决定向客人们展示他所有的明信片。为了实现这一点,他想把它们全部铺在桌子上。起初,他所有的明信片都叠成一叠拿在手中。不幸的是,这叠明信片中有些可能放反了——即上下颠倒。理想情况下,Fedor 希望桌上所有的明信片都是正面朝上的,但逐一检查每张明信片并将其翻转非常耗时。于是,他想出了以下处理过程:
- 设 $n$ 为手中剩余的明信片数量。Fedor 在 $1$ 到 $n$ 之间均匀随机选择一个数字 $k$,并从叠堆顶部取走 $k$ 张明信片。
- 他查看这 $k$ 张明信片中最顶端的那一张。如果它的朝向是错误的,他就将这整叠 $k$ 张明信片一起上下翻转。
- 然后,他将这 $k$ 张明信片放在桌子上,不再进行任何旋转。
- 如果手中还有剩余的明信片,Fedor 回到第 1 步。
当然,当所有明信片都放在桌上后,可能仍有一些是背面朝上的。求这些明信片的期望数量。
输入格式
输入由一行 “C” 和 “W” 字符组成,第 $i$ 个字符对应叠堆中从顶部开始数的第 $i$ 张明信片。“C” 表示第 $i$ 张明信片在初始叠堆中朝向正确,“W” 表示第 $i$ 张明信片朝向错误。字符数量在 $1$ 到 $10^6$ 之间(含边界)。
输出格式
输出一个实数,表示桌上朝向错误的明信片的期望数量。绝对或相对误差不应超过 $10^{-9}$。
样例
样例输入 1
CWCC
样例输出 1
1.0
样例输入 2
WWCWCCW
样例输出 2
2.333333333333