#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10;
char c[N], s[N];
double f[N][2];
int m = 0;
inline bool check(double mid) {
  for (register int i = 1; i <= m; i++) {
    f[i][0] = f[i][1] = INT_MIN;
  }
  f[0][0] = 0;
  f[0][1] = -mid;
  for (register int i = 1; i <= m; i++) {
    if (s[i] == 'L') {
      f[i][1] = max(f[i][1], f[i - 1][0] + 1 - mid);
    } else {
      f[i][1] = max(f[i][1], f[i - 1][0] - mid);
    }
    if (s[i] == 'R') {
      f[i][0] = max(f[i][0], f[i - 1][1] + 1 - mid);
    } else {
      f[i][0] = max(f[i][0], f[i - 1][1] - mid);
    }
    f[i][1] = max(f[i][1], f[i][0] - mid);
    f[i][0] = max(f[i][0], f[i][1] - mid);
  }
  if (f[m][0] > 0) {
    return 1;
  } else {
    return 0;
  }
}
signed main() {
  scanf("%s", c + 1);
  int n = strlen(c + 1);
  if (c[1] == c[n] && c[1] == 'R') {
    m++;
    s[m] = 'X';
  }
  for (register int i = 1; i <= n; i++) {
    m++;
    s[m] = c[i];
    if (i != n && c[i] != 'X' && c[i + 1] != 'X' && c[i] == c[i + 1]) {
      m++;
      s[m] = 'X';
    }
  }
  if (s[1] != 'X' && s[m] == s[1] && s[m] == 'L') {
    m++;
    s[m] = 'X';
  }
  double l = 0, r = 1;
  double ans = 0;
  while (l <= r - 1e-9) {
    double mid = (l + r) / 2;
    if (check(mid)) {
      l = mid;
    } else {
      r = mid;
    }
  }
  int count = (l + 1e-9) * 1e8;
  printf("%d.%.06d", count / 1000000, count % 1000000);
  return 0;
}
