#include <bits/stdc++.h>
using namespace std;
template <class _T>
inline _T sqr(const _T &x) {
  return x * x;
}
template <class _T>
inline string tostr(const _T &a) {
  ostringstream os("");
  os << a;
  return os.str();
}
const long double PI = 3.1415926535897932384626433832795;
const long double EPS = 1e-11;
int n;
char s[2024000];
char s3[2024000];
char s2[2024000];
int a[1024000];
bool b[1024000];
void solve(char *s, int n, int &ansp, int &ansq) {
  int m = 0;
  for (int i = 0; i < (int)(n); i++) {
    if (i && s[i] != 'X' && s[i] == s[i - 1]) s2[m++] = 'X';
    s2[m++] = s[i];
  }
  for (int i = 0; i < (int)(m); i++) {
    s[i] = s2[i];
  }
  n = m;
  int k = 0;
  int st = -1;
  for (int i = 0; i < (int)(n); i++) {
    if (s[i] != 'X') {
      if (st == -1) st = i;
    } else {
      if (st != -1) {
        a[k] = i - st;
        b[k] = (s[st] == 'L') != (st & 1);
        k++;
        st = -1;
      }
    }
  }
  if (st != -1) {
    a[k] = n - st;
    b[k] = (s[st] == 'L') != (st & 1);
    k++;
    st = -1;
  }
  m = 0;
  for (int i = 0; i < (int)(k); i++) {
    if (m && b[i] == b[m - 1]) {
      a[m - 1] += a[i];
    } else {
      a[m] = a[i];
      b[m] = b[i];
      m++;
    }
  }
  k = m;
  if (!k) {
    ansp = 0;
    ansq = 1;
    return;
  }
  ansp = 0;
  ansq = n;
  for (int i = 0; i < (int)(k); i++) {
    if (b[i]) ansp += a[i];
  }
  if (ansq & 1) {
    int s = 0;
    int ma = 0;
    int mj = -1;
    for (int i = (k)-1; i >= 0; i--) {
      if (!b[i]) {
        s += a[i];
      } else {
        s -= a[i];
      }
      if (s > ma) {
        ma = s;
        mj = i;
      }
    }
    if (ma >= 1) {
      ansp += ma;
      ansq += 1;
      if (mj) {
        a[mj - 1] += a[mj];
        k--;
        for (int j = (mj); j <= (int)(k - 1); j++) {
          a[j] = a[j + 1];
        }
      } else {
        for (int j = (mj); j <= (int)(k - 1); j++) {
          b[j] = !b[j];
        }
      }
    }
    ansq += ansq & 1;
  }
  for (int i = 0; i < (int)(k); i++) {
    if (a[i] > 1 && !b[i]) {
      ansp += a[i];
      ansq += 2;
    }
  }
  if (ansp * 2 > ansq) {
    bool r = false;
    for (int i = 0; i < (int)(k); i++) {
      if (i && a[i - 1] > 1 && a[i] == 1 && b[i]) {
        r = true;
      }
      if (r && a[i] > 1 && !b[i]) {
        ansp -= 1;
        ansq -= 2;
      }
      r = r && a[i] == 1;
    }
  } else {
    for (int i = 0; i < (int)(k); i++) {
      if (a[i] == 1 && !b[i]) {
        ansp += 1;
        ansq += 2;
      }
    }
  }
}
int main() {
  cout << setiosflags(ios::fixed) << setprecision(10);
  gets(s);
  n = strlen(s);
  int ansp = 0;
  int ansq = 0;
  if (s[0] != 'X' && s[n - 1] == s[0]) {
    for (int i = 0; i < (int)(n); i++) {
      s3[i] = s[i];
    }
    s3[n] = 'X';
    solve(s3, n + 1, ansp, ansq);
    for (int i = 0; i < (int)(n); i++) {
      s3[i + 1] = s[i];
    }
    s3[0] = 'X';
    int p, q;
    solve(s3, n + 1, p, q);
    if (p * ansq > ansp * q) {
      ansp = p;
      ansq = q;
    }
  } else {
    solve(s, n, ansp, ansq);
  }
  printf("%d.%06d\n", ansp * 100 / ansq,
         (int)(((signed long long)ansp * 100000000 / ansq) -
               (signed long long)ansp * 100 / ansq * 1000000));
  return 0;
}
