#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
vector<int> seq[MAXN];
int ctr, ctl, n;
string s;
int totr, totl;
queue<int> qr, ql;
vector<int> types[2][2];
vector<int> order;
void prt(int x) {
  for (int i = 0; i < seq[x].size(); ++i) printf("%d ", seq[x][i] + 1);
}
int main() {
  int mini = 0, maxi = 0, ct = 0;
  cin >> s;
  n = s.length();
  for (int i = 0; i < n; ++i) {
    ct += (s[i] == 'L');
    ct -= (s[i] == 'R');
    totr += (s[i] == 'R');
    totl += (s[i] == 'L');
    if (ct > maxi) {
      maxi = ct;
      ctl++;
      seq[ctl + ctr - 1].push_back(i);
      ql.push(ctl + ctr - 1);
      continue;
    }
    if (ct < mini) {
      mini = ct;
      ctr++;
      seq[ctr + ctl - 1].push_back(i);
      qr.push(ctr + ctl - 1);
      continue;
    }
    if (s[i] == 'L') {
      int x = qr.front();
      qr.pop();
      seq[x].push_back(i);
      ql.push(x);
    } else {
      int x = ql.front();
      ql.pop();
      seq[x].push_back(i);
      qr.push(x);
    }
  }
  printf("%d\n", ctr + ctl - 1);
  for (int i = 0; i < ctr + ctl; ++i)
    types[s[seq[i][0]] == 'R'][s[seq[i].back()] == 'L'].push_back(i);
  if (types[0][1].size() > types[1][0].size()) {
    for (int i = 0; i < types[0][0].size(); ++i)
      order.push_back(types[0][0][i]);
    for (int i = 0; i < types[1][0].size(); ++i)
      order.push_back(types[0][1][i]), order.push_back(types[1][0][i]);
    order.push_back(types[0][1].back());
    for (int i = 0; i < types[1][1].size(); ++i)
      order.push_back(types[1][1][i]);
  } else if (types[0][1].size() < types[1][0].size()) {
    for (int i = 0; i < types[1][1].size(); ++i)
      order.push_back(types[1][1][i]);
    for (int i = 0; i < types[0][1].size(); ++i)
      order.push_back(types[1][0][i]), order.push_back(types[0][1][i]);
    order.push_back(types[1][0].back());
    for (int i = 0; i < types[0][0].size(); ++i)
      order.push_back(types[0][0][i]);
  } else if (types[0][0].size() > 0) {
    for (int i = 0; i < types[0][0].size(); ++i)
      order.push_back(types[0][0][i]);
    if (types[0][1].size() > 0) order.push_back(types[0][1][0]);
    for (int i = 0; i < types[1][1].size(); ++i)
      order.push_back(types[1][1][i]);
    if (types[1][0].size() > 0) order.push_back(types[1][0][0]);
    for (int i = 1; i < types[1][0].size(); ++i)
      order.push_back(types[0][1][i]), order.push_back(types[1][0][i]);
  } else {
    for (int i = 0; i < types[1][1].size(); ++i)
      order.push_back(types[1][1][i]);
    if (types[1][0].size() > 0) order.push_back(types[1][0][0]);
    for (int i = 0; i < types[0][0].size(); ++i)
      order.push_back(types[0][0][i]);
    if (types[0][1].size() > 0) order.push_back(types[0][1][0]);
    for (int i = 1; i < types[0][1].size(); ++i)
      order.push_back(types[1][0][i]), order.push_back(types[0][1][i]);
  }
  for (int i = 0; i < order.size(); ++i) prt(order[i]);
}
