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 C++ (GCC 9.2.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
using namespace std;

vector<int> adj[100001];
bool possible;
vector<int> vis(100001,0);
int qw = 0;
void dfs(int s,int k)
{
   vis[s] = 1;
   
   if(s == 2)
   {
   	  possible = true;
   	  qw = k;
   }

   for(auto x : adj[s])
   {
   	   if(vis[x]==0)
     	dfs(x,k+1);
   }
}
int main(void)
{
	string s;
	cin>>s;

	int W =0;
	int sum = 0;

	for(int  i = (int)s.length()-1;i>=0;i--)
	{
		  if(s[i]='W')
		  	W++;
		  else
		  	sum+=W;
	}
	cout<<sum<<endl;
}