#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
vector<int> vec[N];
char c[N];
int top[2], tot;
int d[2][N];
vector<int> s[2][2];
void merge(int v1, int v2) {
  for (int i = 0; i < vec[v2].size(); i++) vec[v1].push_back(vec[v2][i]);
  vec[v2].clear();
}
int main() {
  scanf("%s", c);
  d[c[0] == 'R'][++top[c[0] == 'R']] = ++tot;
  vec[tot].push_back(1);
  int len = strlen(c);
  for (int i = 1; i < len; i++) {
    int x = (c[i] != 'L');
    if (!top[x ^ 1])
      d[x][++top[x]] = ++tot, vec[tot].push_back(i + 1);
    else
      d[x][++top[x]] = d[x ^ 1][top[x ^ 1]], vec[d[x][top[x]]].push_back(i + 1),
      top[x ^ 1]--;
  }
  printf("%d\n", tot - 1);
  for (int i = 1; i <= tot; i++)
    s[c[vec[i][0] - 1] != 'L'][c[vec[i].back() - 1] != 'L'].push_back(i);
  for (int i = s[0][1].size() - 1; i >= 1; i--) merge(s[0][1][0], s[0][1][i]);
  if (s[0][1].size()) s[0][1].resize(1);
  for (int i = s[1][0].size() - 1; i >= 1; i--) merge(s[1][0][0], s[1][0][i]);
  if (s[1][0].size()) s[1][0].resize(1);
  if (s[0][1].size() && s[1][0].size()) {
    int x = s[0][1].back(), y = s[1][0].back();
    if (vec[x].back() < vec[y].back()) {
      vec[x].push_back(vec[y].back());
      vec[y].pop_back();
    } else {
      vec[y].push_back(vec[x].back());
      vec[x].pop_back();
    }
    s[0][1].pop_back();
    s[1][0].pop_back();
    s[0][0].push_back(x);
    s[1][1].push_back(y);
  }
  if (s[0][0].size()) {
    if (s[0][1].size())
      merge(s[0][1][0], s[0][0][0]), s[0][0][0] = s[0][1][0],
                                     s[0][1].pop_back();
    if (s[1][0].size()) merge(s[0][0][0], s[1][0][0]), s[1][0].pop_back();
  }
  if (s[1][1].size()) {
    if (s[1][0].size())
      merge(s[1][0][0], s[1][1][0]), s[1][1][0] = s[1][0][0],
                                     s[1][0].pop_back();
    if (s[0][1].size()) merge(s[1][1][0], s[0][1][0]), s[0][1].pop_back();
  }
  if (!s[0][0].size() && !s[1][1].size()) {
    if (s[0][1].size())
      for (int j = 0, sz = vec[s[0][1][0]].size(); j < sz; j++)
        printf("%d ", vec[s[0][1][0]][j]);
    else
      for (int j = 0, sz = vec[s[1][0][0]].size(); j < sz; j++)
        printf("%d ", vec[s[1][0][0]][j]);
    return 0;
  }
  if (s[1][1].size() < s[0][0].size()) swap(s[0][0], s[1][1]);
  for (int i = 0; i < s[1][1].size(); i++) {
    for (int j = 0, sz = vec[s[1][1][i]].size(); j < sz; j++)
      printf("%d ", vec[s[1][1][i]][j]);
    if (s[0][0].size() > i)
      for (int j = 0, sz = vec[s[0][0][i]].size(); j < sz; j++)
        printf("%d ", vec[s[0][0][i]][j]);
  }
  return 0;
}
