fabbbhgedd
 abbbaababbbaababbbaababbbaababbbaababbbaababbbaababbbaababbbaababbbaababbbaababbbaababbbaab
 hcdhgcchbdhbeagdcfedgcbaffebgcbcccadeefacbhefgeadfgchabgeebegahfgegahbddedfhffeadcedadgfbeebhgfahhfb
 khjcoijiicdkdianmdolmadobdkcmgifdnffddnjehhbldlkjffknficdcmokfacioiegjedbmadjioomdacbodcajcmonmnlabo
 bababbdaee
 cbbbbcaaca
 gaejllebhn
 eaaebccaeacdecaedcaabbbdeebccdcdaabeeaeeaddbaabdccebecebbbbedbdcbbbbbbecbaddcddcccdcbbadbecddecedbba
 difhjdjbcdjedhiegagdejkbjfcdcdagdijdjajecbheiabfbjdgjdecfhdkgdbkcgcgakkiiggfkgcfadkjhiijkjacgejfhjge
 bbababaaababaabbbbbabbbbbbaaabbabaaaaabbbbbaaaabbbbabaabaabababbbabbabbabaaababbabbababaaaaabaaaabbb
 cadbcdddda
 kpsaloedscghjeaqadfhmlibjepjafdomkkorinrpakondtnrnknbqarbejcenrlsbfgdbsdmkpphbkdnbitjfcofsjibssmmlll
 aaabbbaaaabbbbaaabbbbbaabbbbaaababbaaabbbbaaabbbbababbbbaaabbbbaaabbbbbaabbbbaaabbbbaaabbbb
 ibledofnibedebifmnjdoaijeghajecbkjaebbkofnacceaodiifbhgkihkibddneeiemacodeafeaiiiaoajhmkjffbmmiehebhokfklhbkeoanoajdedjdlkbhenidclagggfhhhldfleccgmjbkhaginlhabkabagikalccndciokabfaebjkndf
 abbacba
 jkeaagakbifeaechkifkdghcjcgighidcgdccfbdbcackfgaebkddabgijkhjkaffkabacekdkjekeccegbecbkecbgbgcacgdackcdfjefaifgbigahkbedidfhjbikejdhejcgideaeejdcegeeccaefbddejkbdkfagfcdjbikbidfggkidcdcic

1.000000000000000
 0.000000000000000
 0.450000000000000
 0.960000000000000
 1.000000000000000
 0.800000000000000
 1.000000000000000
 0.080000000000000
 0.840000000000000
 0.000000000000000
 0.800000000000000
 1.000000000000000
 0.000000000000000
 0.786096256684492
 1.000000000000000
 0.438502673796791

//package com.company;

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        MyScanner sc = new MyScanner(System.in);
        PrintWriter pw = new PrintWriter(System.out);
//        long st = System.currentTimeMillis();
        Tanks.solve(sc, pw);
//        pw.println(System.currentTimeMillis() - st);
        pw.close();
    }
    public static class Tanks {
        static List<Integer>[] idxs;
        static int[] solus;
        static char[] str;
        static int n;
        public static void solve(MyScanner sc, PrintWriter pw) throws IOException {
            str = sc.next().toCharArray();
//            str = new char[4];
//            Random rnd = new Random();
//            for (int i = 0; i < 4; i++) {
////                str[i] = 'a';
//                int c = (int)(rnd.nextDouble() * 26);
//                str[i] = (char)(c + 'a');
//            }
            n = str.length;
            idxs = new List[26];
            for (int i = 0; i < idxs.length; i++) {
                idxs[i] = new ArrayList<>();
            }
            solus = new int[n];
            for (int i = 0; i < n; i++) {
                str[i] -= 'a';
                idxs[str[i]].add(i);
            }
            int su = 0;
            for (int i = 0; i < 26; i++) {
                if (idxs[i].size() == 0) continue;
                if (idxs[i].size() == 1) {
//                    solus[idxs[i].get(0)] = 1;
                    su += 1;
                    continue;
                }
                int start = idxs[i].get(0);
                int bs = 0;
                for (int j = 1; j < n; j++) {
                    boolean br = false;
                    int cc = 0;
                    int[] cnt = new int[26];
                    for (int k = 0; k < idxs[i].size(); k++) {
                        int pt = (idxs[i].get(k) + j) % n;
                        if (cnt[str[pt]] == 0) {
                            cnt[str[pt]] = idxs[i].get(k) + 1;
                        } else {
                            cnt[str[pt]] = -1;
                        }
                    }
                    for (int k = 0; k < 26; k++) {
                        if (cnt[k] > 0) {
                            cc++;
//                            solus[cnt[k] - 1] = 1;
                        }
                    }
                    bs = Math.max(bs, cc);
                }
                su += bs;
            }
//            for (int i = 0; i < n; i++) {
//                su += solus[i] == 1 ? 1 : 0;
//            }
            pw.println((su + 0.0) / n);
        }



    }



    static class MyScanner {
        StringTokenizer st;
        BufferedReader br;

        public MyScanner(InputStream s){  br = new BufferedReader(new InputStreamReader(s));}

        public MyScanner(FileReader s) throws FileNotFoundException {br = new BufferedReader(s);}

        public String next() throws IOException
        {
            while (st == null || !st.hasMoreTokens())
                st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }

        public int nextInt() throws IOException {return Integer.parseInt(next());}

        public long nextLong() throws IOException {return Long.parseLong(next());}

        public String nextLine() throws IOException {return br.readLine();}

        public double nextDouble() throws IOException { return Double.parseDouble(next()); }

        public boolean ready() throws IOException {return br.ready();}
    }
}
