#include <bits/stdc++.h>
using namespace std;
template <typename T>
void print(const T& v) {
  cerr << v << ' ';
}
template <typename T1, typename... T2>
void print(const T1& first, const T2&... rest) {
  print(first);
  print(rest...);
}
typedef priority_queue<pair<int, int>, vector<pair<int, int> >,
                       greater<pair<int, int> > >
    pq;
int Set(int N, int pos) { return N = N | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  string s;
  cin >> s;
  int cw = 0, co = 0;
  int countr = 0;
  vector<int> pr;
  for (int i = 0; i < (int)s.size(); ++i) {
    if (s[i] == 'v') {
      countr++;
      if (countr == 2) {
        cw++;
        countr = 1;
      }
    } else {
      co++;
      countr = 0;
      pr.push_back(cw);
    }
  }
  vector<int> suf(co);
  int it = co;
  countr = 0, cw = 0;
  for (int i = (int)s.size() - 1; i > -1; --i) {
    if (s[i] == 'v') {
      countr++;
      if (countr == 2) {
        cw++;
        countr = 1;
      }
    } else {
      countr = 0;
      suf[--it] = cw;
    }
  }
  long long sum = 0;
  for (int i = 0; i < (int)pr.size(); ++i) {
    sum += ((long long)pr[i] * suf[i]);
  }
  cout << sum;
  return 0;
}
