#include <bits/stdc++.h>
const int nmax = 2e6;
char *s;
long long **dp;
long long max(long long a, long long b) { return (a < b ? b : a); }
int solve() {
  int n = strlen(s);
  long long lf = 0, rg = (long long)(1e8) + 1;
  while (lf < rg - 1) {
    long long md = (lf + rg) >> 1;
    dp[0][0] = 0;
    dp[0][1] = -md;
    for (int i = 1; i <= n; ++i) {
      dp[i][0] = dp[i - 1][1] - md;
      dp[i][1] = dp[i - 1][0] - md;
      if (s[i - 1] == 'L') {
        dp[i][1] = max(dp[i][1], dp[i - 1][0] + (long long)(1e8) - md);
      } else if (s[i - 1] == 'R') {
        dp[i][0] = max(dp[i][0], dp[i - 1][1] + (long long)(1e8) - md);
      }
      dp[i][0] = max(dp[i][0], dp[i][1] - md);
      dp[i][1] = max(dp[i][1], dp[i][0] - md);
    }
    if (dp[n][0] >= 0) {
      lf = md;
    } else {
      rg = md;
    }
  }
  return lf;
}
int main() {
  s = (char *)malloc(nmax);
  memset(s, 0, nmax);
  dp = (long long **)malloc(nmax * sizeof(long long *));
  for (int i = 0; i < nmax; ++i) {
    dp[i] = (long long *)malloc(2 * sizeof(long long));
    dp[i][0] = dp[i][1] = 0;
  }
  char t[nmax];
  scanf("%s", t);
  int pos = 0;
  for (int i = 0; t[i]; ++i) {
    if (i && t[i] == t[i - 1] && t[i] != 'X') {
      s[pos++] = 'X';
    }
    s[pos++] = t[i];
  }
  int ans = 0;
  if (s[0] == s[pos - 1] && s[0] != 'X') {
    if (s[0] == 'L') {
      s[pos++] = 'X';
    } else {
      memmove(s + 1, s, pos + 1);
      s[0] = 'X';
    }
  }
  ans = solve();
  printf("%d.%06d\n", ans / (int)(1e6), ans % (int)(1e6));
}
