#include <bits/stdc++.h>
using namespace std;
template <typename tp>
inline void read(tp &x) {
  x = 0;
  char c = getchar();
  int f = 0;
  for (; c < '0' || c > '9'; f |= c == '-', c = getchar())
    ;
  for (; c >= '0' && c <= '9'; x = (x << 3) + (x << 1) + c - '0', c = getchar())
    ;
  if (f) x = -x;
}
const int N = 2e5 + 233;
char str[N];
int n, tot;
vector<int> vec[N], answer;
map<pair<int, int>, vector<int> > cnt;
int main(void) {
  scanf("%s", str + 1);
  n = strlen(str + 1);
  int c1 = 0;
  for (int i = 1; i <= (n); i++) c1 += (str[i] = str[i] == 'R');
  set<int> alive[2];
  for (int i = 1; i <= (n); i++) alive[str[i]].insert(i);
  while (!alive[0].empty() || !alive[1].empty()) {
    vector<int> &cur = vec[++tot];
    int f = alive[0].empty()   ? 1
            : alive[1].empty() ? 0
                               : *alive[1].begin() < *alive[0].begin();
    int u = *alive[f].begin();
    cur.push_back(u);
    alive[f].erase(u);
    while (true) {
      f ^= 1;
      auto it = alive[f].lower_bound(u);
      if (it == alive[f].end()) break;
      cur.push_back(u = *it);
      alive[f].erase(it);
    }
    cnt[make_pair(str[cur.front()], str[cur.back()])].push_back(tot);
  }
  auto get = [&](int x, int y) {
    if (!cnt[{x, y}].size()) return false;
    answer.push_back(cnt[{x, y}].back());
    cnt[{x, y}].pop_back();
    return true;
  };
  if (cnt[{0, 0}].size() || cnt[{1, 1}].size()) {
    int f = n & 1 ? (n / 2 + 1) == c1 : 1;
    while (get(f, f ^ 1))
      ;
    get(f, f);
    while (get(f ^ 1, f))
      ;
    while (get(f ^ 1, f ^ 1)) get(f, f);
  } else {
    assert(n % 2 == 0);
    vector<int> &LR = cnt[{0, 1}], &RL = cnt[{1, 0}];
    if (!LR.empty() && !RL.empty()) {
      auto &s = vec[LR.front()], &t = vec[RL.front()];
      int f;
      if (s.back() > t.back())
        t.push_back(s.back()), s.pop_back(), f = 0;
      else
        s.push_back(t.back()), t.pop_back(), f = 1;
      while (get(f, f ^ 1))
        ;
      while (get(f ^ 1, f))
        ;
    } else {
      int f = LR.empty();
      while (get(f, f ^ 1))
        ;
    }
  }
  cout << answer.size() - 1 << "\n";
  for (int i : answer) {
    for (int j : vec[i]) cout << j << " ";
  }
  cout << "\n";
}
