#include <bits/stdc++.h>
using namespace std;
int n, ans, t, tot, s[20005];
int a[26][20005];
int q[26];
char c;
void read(int &x) {
  x = 0;
  int k = 1;
  char c = getchar();
  while ((c != '-') && (c < '0' || c > '9')) c = getchar();
  if (c == '-') k = -1, c = getchar();
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  x = x * k;
}
void write(int x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
void init() { freopen("e.in", "r", stdin); }
int main() {
  c = getchar();
  while (c < 'a' || c > 'z') c = getchar();
  while (c >= 'a' && c <= 'z') {
    s[++n] = c - 'a';
    c = getchar();
  }
  for (int i = n + 1; i <= 2 * n; i++) s[i] = s[i - n];
  for (int i = 1; i <= n; i++) {
    a[s[i]][++a[s[i]][0]] = i;
  }
  for (int ii = 0; ii <= 25; ii++) {
    t = 0;
    for (int j = 1; j <= n - 1; j++) {
      tot = 0;
      memset(q, 0, sizeof(q));
      for (int k = 1; k <= a[ii][0]; k++) {
        if (q[s[a[ii][k] + j]] == 0) {
          q[s[a[ii][k] + j]] = 1, tot++;
        } else if (q[s[a[ii][k] + j]] == 1) {
          q[s[a[ii][k] + j]] = -1, tot--;
        }
      }
      t = max(t, tot);
    }
    ans += t;
  }
  printf("%.15f\n", double(ans) / double(n));
  return 0;
}
