#include <bits/stdc++.h>
using namespace std;
const int MN = 100005, inf = 1000000005, mod = 1000000007;
const long long INF = 1000000000000000005LL;
char S[MN];
set<int> pos[2];
vector<int> kto[MN];
vector<int> raki[2][2];
void zamien() {
  int lr = raki[1][0].back();
  raki[1][0].pop_back();
  int rl = raki[0][1].back();
  raki[0][1].pop_back();
  reverse((kto[lr]).begin(), (kto[lr]).end());
  reverse((kto[rl]).begin(), (kto[rl]).end());
  if (kto[lr].back() < kto[rl].back()) {
    kto[rl].push_back(kto[lr].back());
    kto[lr].pop_back();
  } else {
    kto[lr].push_back(kto[rl].back());
    kto[rl].pop_back();
  }
  raki[0][0].push_back(lr);
  raki[1][1].push_back(rl);
  reverse((kto[lr]).begin(), (kto[lr]).end());
  reverse((kto[rl]).begin(), (kto[rl]).end());
}
void pisz(int x) {
  for (auto v : kto[x]) printf("%d ", v);
}
int main() {
  scanf("%s", S + 1);
  int n = strlen(S + 1);
  for (int i = 1; i <= n; ++i)
    if (S[i] == 'R')
      pos[0].insert(i);
    else
      pos[1].insert(i);
  pos[0].insert(inf);
  pos[1].insert(inf);
  int cur = (S[1] == 'L'), res = 0;
  auto it = pos[cur].begin();
  for (int i = 1; i <= n; ++i) {
    int rak = *it;
    kto[res].push_back(rak);
    pos[cur].erase(rak);
    if (i == n) break;
    cur ^= 1;
    it = pos[cur].lower_bound(rak);
    if ((*it) == inf) {
      ++res;
      int v = min(*pos[0].begin(), *pos[1].begin());
      cur = (S[v] != 'R');
      it = pos[cur].begin();
    }
  }
  printf("%d\n", res);
  for (int i = 0; i <= res; ++i) {
    int p = (S[kto[i][0]] == 'L'), k = (S[kto[i].back()] == 'L');
    raki[p][k].push_back(i);
  }
  if (raki[1][0].size() && raki[0][1].size() && !raki[0][0].size() &&
      !raki[1][1].size())
    zamien();
  if (raki[0][0].size() == 0 && raki[0][0].size() == raki[1][1].size()) {
    for (auto v : raki[0][1]) pisz(v);
    for (auto v : raki[1][0]) pisz(v);
    return 0;
  }
  if (raki[0][0].size() >= raki[1][1].size())
    cur = 1;
  else
    cur = 0;
  while (res >= 0) {
    if (raki[cur ^ 1][cur].size()) {
      for (auto v : raki[cur ^ 1][cur]) pisz(v);
      res -= raki[cur ^ 1][cur].size();
      raki[cur ^ 1][cur].clear();
    }
    cur ^= 1;
    if (raki[cur][cur].size()) {
      pisz(raki[cur][cur].back());
      raki[cur][cur].pop_back();
      --res;
    }
  }
}
