#include <bits/stdc++.h>
using namespace std;
const long long maxn = 2e6 + 5;
const double eps = 1e-9;
long long n, len;
double ANS;
double num;
char s[maxn], t[maxn];
double dp[maxn][2];
inline double mx(double x, double y) { return x > y ? x : y; }
bool check(double lim) {
  double N = n + !(n & 1);
  if (num - 2 * N * lim > -eps) {
    return 1;
  }
  dp[0][1] = -1e15;
  for (int i = 1; i <= n; i++) {
    dp[i][1] = mx(dp[i - 1][0], dp[i - 1][1] - lim) - lim + (s[i] == 'L');
    dp[i][0] = mx(dp[i - 1][1], dp[i - 1][0] - lim) - lim + (s[i] == 'R');
  }
  return (dp[n][0] > -eps) || (dp[n][1] - lim > -eps);
}
double solve() {
  double l = 0, r = 1, ans = 0;
  while (r - l > eps) {
    double mid = (l + r) / 2;
    if (check(mid)) {
      l = ans = mid;
    } else {
      r = mid;
    }
  }
  ans = ans + 1e-9;
  ans = (long long)(ans * 100000000.0);
  ans = ans / 1000000.0;
  return ans;
}
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (int i = 1; i <= n; i++) {
    if (s[i] != 'X' && t[len] == s[i]) {
      t[++len] = 'X';
      t[++len] = s[i];
    } else {
      t[++len] = s[i];
    }
  }
  n = len;
  for (int i = 1; i <= n; i++) {
    s[i] = t[i];
  }
  for (int i = 1; i <= n; i++) {
    if (s[i] != 'X') num++;
  }
  bool flag = 0;
  if (s[1] == s[n] && s[1] != 'X') {
    s[++n] = 'X';
    flag = 1;
  }
  ANS = solve();
  if (flag) {
    for (int i = n; i >= 2; i--) {
      s[i] = s[i - 1];
    }
    s[1] = 'X';
    ANS = max(ANS, solve());
  }
  printf("%.6lf\n", ANS);
  return 0;
}
