#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int rd() {
  int x = 0, w = 1;
  char ch = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 3) + (x << 1) + (ch ^ 48);
    ch = getchar();
  }
  return x * w;
}
char cc[N];
set<int> sb[2];
set<int>::iterator nt, p1, p2;
int n, an[N], sq[N], ts, mx, nz;
void wk(bool fx) {
  int np = *sb[fx].begin();
  sq[ts = 1] = np;
  sb[fx].erase(sb[fx].begin());
  int rs = n - 1;
  nz = 0;
  while (rs--) {
    nt = sb[fx ^ 1].upper_bound(np);
    if ((*nt) <= n)
      np = sq[++ts] = (*nt), sb[fx ^ 1].erase(nt);
    else {
      ++nz;
      p1 = sb[fx].begin(), p2 = sb[fx ^ 1].begin();
      if ((*p1) < (*p2)) {
        sb[fx].insert(np);
        np = sq[ts] = *p1, sb[fx].erase(p1);
        ++rs;
        continue;
      } else {
        if ((*p2) > n) return;
        np = sq[++ts] = (*p2), sb[fx ^ 1].erase(p2);
      }
    }
    fx ^= 1;
  }
  if (nz < mx) {
    mx = nz;
    memcpy(an, sq, sizeof(int) * (n + 1));
  }
}
void print() {
  printf("%d\n", mx);
  for (int i = 1; i <= n; ++i) printf("%d ", an[i]);
}
int main() {
  scanf("%s", cc + 1), n = strlen(cc + 1);
  mx = n + 1;
  sb[0].insert(n + 1), sb[1].insert(n + 1);
  for (int i = 1; i <= n; ++i) {
    if (cc[i] == 'L')
      sb[0].insert(i);
    else
      sb[1].insert(i);
  }
  if (sb[0].size() >= sb[1].size()) wk(0);
  sb[0].clear(), sb[1].clear();
  sb[0].insert(n + 1), sb[1].insert(n + 1);
  for (int i = 1; i <= n; ++i) {
    if (cc[i] == 'L')
      sb[0].insert(i);
    else
      sb[1].insert(i);
  }
  if (sb[0].size() <= sb[1].size()) wk(1);
  print();
  return 0;
}
