#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
char s[MAXN];
vector<int> R, L, A;
int sum[MAXN << 2][2];
void pushup(int o, int flag) {
  sum[o][flag] = sum[o << 1][flag] + sum[o << 1 | 1][flag];
}
void update(int l, int r, int o, int p, int v, int flag) {
  if (l == r) {
    sum[o][flag] += v;
    return;
  }
  int m = l + r >> 1;
  if (p <= m)
    update(l, m, o << 1, p, v, flag);
  else
    update(m + 1, r, o << 1 | 1, p, v, flag);
  pushup(o, flag);
}
int res;
void call2(int l, int r, int o, int L, int R, int flag) {
  if (L <= l && r <= R) {
    res += sum[o][flag];
    return;
  }
  int m = l + r >> 1;
  if (L <= m) call2(l, m, o << 1, L, R, flag);
  if (m < R) call2(m + 1, r, o << 1 | 1, L, R, flag);
}
int pos;
void call(int l, int r, int o, int k, int flag) {
  if (l == r) {
    pos = l;
    return;
  }
  int m = l + r >> 1;
  if (k <= sum[o << 1 | 1][flag])
    call(m + 1, r, o << 1 | 1, k, flag);
  else
    call(l, m, o << 1, k - sum[o << 1 | 1][flag], flag);
}
int pos2;
void call3(int l, int r, int o, int k, int flag) {
  if (l == r) {
    pos2 = l;
    return;
  }
  int m = l + r >> 1;
  if (k <= sum[o << 1][flag])
    call3(l, m, o << 1, k, flag);
  else
    call3(m + 1, r, o << 1 | 1, k - sum[o << 1][flag], flag);
}
int main() {
  scanf("%s", s);
  int n = strlen(s);
  for (int i = 0; i < n; i++) {
    if (s[i] == 'R')
      R.push_back(i + 1);
    else
      L.push_back(i + 1);
  }
  int sz1 = R.size();
  int sz2 = L.size();
  if (sz2 > sz1) {
    swap(R, L);
    swap(sz1, sz2);
  } else if (sz1 == sz2 && L[0] < R[0]) {
    swap(R, L);
  }
  for (int i = 0; i < sz1; i++) {
    update(1, n, 1, R[i], 1, 1);
  }
  for (int i = 0; i < sz2; i++) {
    update(1, n, 1, L[i], 1, 0);
  }
  int ans = 0;
  int id = 1;
  int p = R[0];
  while (1) {
    update(1, n, 1, p, -1, id);
    A.push_back(p);
    res = 0;
    if (p + 1 <= n) call2(1, n, 1, p + 1, n, id ^ 1);
    if (res == 0) {
      if (1 <= p - 1) call2(1, n, 1, 1, p - 1, id ^ 1);
      if (res == 0) break;
      call3(1, n, 1, 1, id ^ 1);
      p = pos2;
      id ^= 1;
      ans++;
      continue;
    }
    call(1, n, 1, res, id ^ 1);
    res = 0;
    if (pos + 1 <= n) call2(1, n, 1, pos + 1, n, id);
    if (res > 0) {
      id ^= 1;
      p = pos;
    } else {
      pos2 = 0;
      if (sum[1][id] > 0) call3(1, n, 1, 1, id);
      int x = pos2;
      pos2 = 0;
      call3(1, n, 1, 1, id ^ 1);
      int y = pos2;
      if (x > y) {
        id ^= 1;
        int hh = p;
        p = y;
        ans++;
      } else {
        id ^= 1;
        p = pos;
      }
    }
  }
  printf("%d\n", ans);
  int ss = A.size();
  for (int i = 0; i < ss; i++) printf("%d ", A[i]);
  puts("");
  return 0;
}
