Problem:
Score : 300 points

Problem Statement

Snuke can change a string t of length N into a string t' of length N - 1 under the following rule:

For each i (1 ≤ i ≤ N - 1), the i-th character of t' must be either the i-th or (i + 1)-th character of t.

There is a string s consisting of lowercase English letters.
Snuke's objective is to apply the above operation to s repeatedly so that all the characters in s are the same.
Find the minimum necessary number of operations.

Constraints

1 ≤ |s| ≤ 100

s consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

s

Output

Print the minimum necessary number of operations to achieve the objective.

Sample Input 1

serval

Sample Output 1

3

One solution is: serval → srvvl → svvv → vvv.

Sample Input 2

jackal

Sample Output 2

2

One solution is: jackal → aacaa → aaaa.

Sample Input 3

zzz

Sample Output 3

0

All the characters in s are the same from the beginning.

Sample Input 4

whbrjpjyhsrywlqjxdbrbaomnw

Sample Output 4

8

In 8 operations, he can change s to rrrrrrrrrrrrrrrrrr.

Solution in OCaml (4.10.0) (judge verdict: Accepted)

Scanf.scanf "%s" (fun s ->
    let h = Array.make 26 false in
    String.iter (fun c -> h.(int_of_char c - 97) <- true) s;
    let rec chl c s cnt =
        let n = String.length s in
        let rec loop i =
            if i = n then true else
                if s.[i] = c then loop (i + 1) else false
        in
        if loop 0 then cnt else
            let s = String.init (n - 1) (fun i ->
                if s.[i] = c || s.[i + 1] = c then c else s.[i])
            in
            chl c s (cnt + 1)
    in
    let rec loop i acc =
        if i = 26 then acc else
            if h.(i) then loop (i + 1) (min acc (chl (char_of_int (i + 97)) s 0))
                      else loop (i + 1) acc
    in
    loop 0 max_int |> Printf.printf "%d\n"
)