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 C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;
using System.Linq;
public class Program {
  public static void Main() {
  	char[] arr = Console.ReadLine().ToArray();
	
	var cnt = 1;	
	var list = new List<NC>();
	
	foreach(var c in arr)
	{
		NC nc = new NC();
		nc.N = cnt;
		nc.C= c;
		list.Add(nc);
		cnt++;
	}
       if(list.Select(x=>x.C).Distinct().Count() == 0) 
	{
		Console.WriteLine(0);
		return;
	}

	var numf = 0;
	var ans = 101;
	foreach(var c in list.Select(x=>x.C).Distinct())
	{
		List<int> dis = new List<int>();
		var numt = 0;
		for(int i = 0; i < list.Count(); i++)
		{	
			if(c == list[i].C && dis.Count() == 0)
			{
				dis.Add(i);
				numf = i;
			}
			else if(c == list[i].C)
			{
				dis.Add(i - numf - 1);
				numf = i;
			}			
		}
		dis.Add(list.Count() - numf);
		if(ans > dis.Max(x=>x))
		{
			ans = dis.Max(x=>x);
		}
	}
	
	Console.WriteLine(ans);
  }
  
  public class NC 
  {
  	public int N {get; set;}
  	public char C {get; set;}
  }
}