#include <bits/stdc++.h>
using namespace std;
class Graph {
 public:
  int V;
  vector<vector<int> > adj;
  Graph(int n) : V(n), adj(n) {}
  void add_edge(int u, int v) {
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
};
inline int gcd(int a, int b) {
  while (a > 0 && b > 0) {
    if (a > b)
      a %= b;
    else
      b %= a;
  }
  return a + b;
}
int even[100010], odd[100010], neven[100010], nodd[100010];
int main() {
  string s;
  cin >> s;
  int sz = int((s).size());
  odd[0] = 1;
  for (int i = 1; i < sz; i++) {
    if (s[i] == s[i - 1]) {
      odd[i] = even[i - 1] + 1;
      even[i] = odd[i - 1];
      neven[i] = nodd[i - 1];
      nodd[i] = neven[i - 1];
    } else {
      even[i] = nodd[i - 1];
      odd[i] = neven[i - 1] + 1;
      neven[i] = odd[i - 1];
      nodd[i] = even[i - 1];
    }
  }
  long long ev = 0, od = 0;
  for (int i = 0; i < sz; i++) {
    ev += even[i];
    od += odd[i];
  }
  cout << ev << " " << od << endl;
  return 0;
}
