#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
int nex[N][2];
int solve(int n, int flag, vector<int> &ans) {
  int sum[2];
  sum[0] = sum[1] = 0;
  int fr = 1, num = 0;
  set<int> ext[2];
  for (int i = 1; i <= n; ++i) {
    ext[a[i]].insert(i);
    ++sum[a[i]];
  }
  if (sum[flag] < sum[flag ^ 1]) return 1 << 30;
  int x = *ext[flag].begin();
  ans.push_back(x);
  ext[flag].erase(x);
  while (ans.size() < n) {
    flag ^= 1;
    int T = n + 1;
    if (!ext[0].empty()) {
      T = *ext[0].begin();
    }
    if (!ext[1].empty()) T = min(*ext[1].begin(), T);
    int mark = 1;
    if (T >= x ||
        (a[T] == a[x] && ext[flag].lower_bound(x) != ext[flag].end())) {
      mark = 0;
    } else {
      if (ext[flag].lower_bound(x) != ext[flag].end()) {
        int y = *ext[flag].lower_bound(x);
        if (ext[flag ^ 1].lower_bound(y) != ext[flag ^ 1].end()) mark = 0;
      }
    }
    int y;
    if (mark == 0) {
      y = *ext[flag].lower_bound(x);
    } else {
      y = *ext[flag].begin();
    }
    ans.push_back(y);
    x = y;
    ext[flag].erase(x);
    num += mark;
  }
  return num;
}
char str[N];
int main() {
  int n;
  scanf("%s", str + 1);
  n = strlen(str + 1);
  for (int i = 1; i <= n; ++i) {
    if (str[i] == 'L')
      a[i] = 0;
    else
      a[i] = 1;
  }
  if (n == 1) {
    puts("0");
    puts("1");
    return 0;
  }
  vector<int> ans1, ans2;
  int k1 = solve(n, 0, ans1);
  int k2 = solve(n, 1, ans2);
  if (k1 > k2) {
    ans1 = ans2;
    k1 = k2;
  }
  printf("%d\n", k1);
  for (int i = 0; i < ans1.size(); ++i)
    printf("%d%c", ans1[i], " \n"[i == n - 1]);
  return 0;
}
