Problem:
Score : 300 points

Problem Statement

There are N Reversi pieces arranged in a row. (A Reversi piece is a disc with a black side and a white side.)
The state of each piece is represented by a string S of length N.
If S_i=B, the i-th piece from the left is showing black;
If S_i=W, the i-th piece from the left is showing white.

Consider performing the following operation:

Choose i (1 \leq i < N) such that the i-th piece from the left is showing black and the (i+1)-th piece from the left is showing white, then flip both of those pieces. That is, the i-th piece from the left is now showing white and the (i+1)-th piece from the left is now showing black.

Find the maximum possible number of times this operation can be performed.

Constraints

1 \leq |S| \leq 2\times 10^5

S_i=B or W

Input

Input is given from Standard Input in the following format:

S

Output

Print the maximum possible number of times the operation can be performed.

Sample Input 1

BBW

Sample Output 1

2

The operation can be performed twice, as follows:

Flip the second and third pieces from the left.

Flip the first and second pieces from the left.

Sample Input 2

BWBWBW

Sample Output 2

6

Solution in Python (3.4.3) (judge verdict: Time Limit Exceeded)

def changeStr(in_str, tgt_idx):
    work_str = ""

    # Left
    if tgt_idx != 0:
        work_str = in_str[:tgt_idx]

    # Target
    if in_str[tgt_idx] == "W":
        work_str = work_str + "BW"
    else:
        work_str = work_str + "WB"
    
    # Right
    if tgt_idx < len(in_str) -2:
        work_str = work_str + in_str[tgt_idx+2:]
    
    return work_str

# Input
s = input()

idx = 0
sav_idx = -1
cnt = 0
while idx < len(s)-1:

    if idx == sav_idx:
        idx += 1
    # BW or WB
    if (s[idx] == "B" and s[idx+1] == "W") or (s[idx] == "W" and s[idx+1] == "B"):
        s = changeStr(s, idx)

        cnt += 1
        sav_idx = idx
        idx -= 1
        if idx < 0:
            idx = 0

    # BB or WW
    else:
        idx += 1
# Output
print(cnt)