#include <bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
inline int read() {
  char c = getchar();
  int x = 0;
  bool f = 0;
  for (; !isdigit(c); c = getchar()) f ^= !(c ^ 45);
  for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
  if (f) x = -x;
  return x;
}
int n, m;
char t[2000005], s[2000005];
double f[2000005][2];
bool check(double x) {
  f[0][0] = 0, f[0][1] = -x;
  for (register int i = (1); i <= (n); ++i) {
    f[i][0] = f[i - 1][1] + (s[i] == 'R') - x;
    f[i][1] = f[i - 1][0] + (s[i] == 'L') - x;
    f[i][0] = max(f[i][0], f[i][1] - x);
    f[i][1] = max(f[i][1], f[i][0] - x);
  }
  return f[n][0] > 0;
}
signed main() {
  scanf("%s", t + 1);
  n = strlen(t + 1);
  if (t[1] == t[n] && t[1] == 'R') s[++m] = 'X';
  for (register int i = (1); i <= (n); ++i) {
    s[++m] = t[i];
    if (t[i] == t[i + 1] && t[i] != 'X' && t[i + 1] != 'X') s[++m] = 'X';
  }
  if (s[1] == s[m] && s[1] == 'L') s[++m] = 'X';
  n = m;
  double l = 0, r = 1;
  while (r - l >= 1e-9) {
    double mid = (l + r) / 2;
    if (check(mid))
      l = mid;
    else
      r = mid;
  }
  int res = (l + 1e-9) * 1e8, mod = 1e6;
  printf("%d.%06d", res / mod, res % mod);
  return 0;
}
