#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int C = 26;
void add(int &x, int y) {
  x += y;
  while (x >= MOD) x -= MOD;
  while (x < 0) x += MOD;
}
int fix(int x) {
  while (x >= MOD) x -= MOD;
  while (x < 0) x += MOD;
  return x;
}
int pw(int a, int b) {
  int ret = 1;
  while (b) {
    if (b & 1) ret = 1ll * ret * a % MOD;
    b >>= 1;
    a = 1ll * a * a % MOD;
  }
  return ret;
}
const int MAXN = 1e6 + 10;
int a[MAXN], ans[MAXN], n, K, sz;
vector<int> who[MAXN], vec[2][2];
int r(int x, int y) { return rand() % (y - x + 1) + x; }
void solve() {
  string s;
  n = r(2, 1000);
  int zz = n / 2;
  for (int i = 0; i < zz; i++) s.push_back('L');
  for (int i = zz; i < n; i++) s.push_back('R');
  random_shuffle(s.begin(), s.end());
  cin >> s;
  n = s.size();
  for (int i = 0; i < n; i++) a[i] = s[i] == 'L';
  set<int> avail[2];
  K = sz = 0;
  for (int i = 0; i < n; i++) {
    if (avail[a[i] ^ 1].empty()) {
      avail[a[i]].insert(K);
      who[K].push_back(i);
      K++;
    } else {
      int x = *avail[a[i] ^ 1].begin();
      avail[a[i] ^ 1].erase(x);
      who[x].push_back(i);
      avail[a[i]].insert(x);
    }
  }
  for (int i = 0; i < K; i++) {
    vec[a[who[i][0]]][a[who[i].back()]].push_back(i);
  }
  assert(abs((int)vec[0][0].size() - (int)vec[1][1].size()) <= 1);
  int cur = vec[0][0].size() < vec[1][1].size();
  int last = vec[0][0].size() > vec[1][1].size();
  cerr << vec[0][0].size() << " " << vec[1][1].size() << " " << cur << " "
       << last << endl;
  while ((int)max(vec[0][0].size(), vec[1][1].size()) > 1) {
    int i = vec[cur][cur].back();
    vec[cur][cur].pop_back();
    for (int x : who[i]) ans[sz++] = x;
    cur ^= 1;
  }
  cerr << vec[0][0].size() << " " << vec[1][1].size() << " " << last << endl;
  for (int i = 0; i < sz; i++) {
    cerr << ans[i] + 1 << " ";
  }
  cerr << "\n"
       << "---------------------\n";
up:
  if (vec[0][0].size() && vec[1][1].size()) {
    if (last) {
      for (int i : vec[1][1])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[0][1])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[0][0])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[1][0])
        for (int x : who[i]) ans[sz++] = x;
    } else {
      for (int i : vec[0][0])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[1][0])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[1][1])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[0][1])
        for (int x : who[i]) ans[sz++] = x;
    }
  } else {
    cerr << "here yo\n";
    assert((int)max(vec[0][0].size(), vec[1][1].size()) < 2);
    for (int i = 0; i < 2; i++)
      for (int j = 0; j < 2; j++)
        cerr << i << j << ": " << vec[i][j].size() << "\n";
    if (vec[0][0].size()) {
      for (int i : vec[0][1])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[0][0])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[1][0])
        for (int x : who[i]) ans[sz++] = x;
    } else if (vec[1][1].size()) {
      for (int i : vec[1][0])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[1][1])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[0][1])
        for (int x : who[i]) ans[sz++] = x;
    } else if (!!vec[0][1].size() ^ !!vec[1][0].size()) {
      for (int i : vec[1][0])
        for (int x : who[i]) ans[sz++] = x;
      for (int i : vec[0][1])
        for (int x : who[i]) ans[sz++] = x;
    } else {
      int i = vec[0][1].back();
      vec[0][1].pop_back();
      int j = vec[1][0].back();
      for (int k = 1; k < (int)who[i].size(); k++) who[j].push_back(who[i][k]);
      while ((int)who[i].size() > 1) who[i].pop_back();
      vec[0][0].push_back(i);
      goto up;
    }
  }
  cout << K - 1 << "\n";
  for (int i = 0; i < n; i++) cout << ans[i] + 1 << " ";
  cout << "\n";
  cerr << s << endl << endl;
  assert(sz == n);
  for (int i = 0; i < n - 1; i++) assert(a[ans[i]] != a[ans[i + 1]]);
  for (int i = 0; i < K; i++) who[i].clear();
  for (int i = 0; i < 2; i++)
    for (int j = 0; j < 2; j++) vec[i][j].clear();
}
int main() {
  int te = 1;
  for (int w = 1; w <= te; w++) {
    solve();
  }
  return 0;
}
