You are given a string *s* consisting of lowercase Latin letters. Character *c* is called *k*-dominant iff each substring of *s* with length at least *k* contains this character *c*.

You have to find minimum *k* such that there exists at least one *k*-dominant character.
The first line contains string *s* consisting of lowercase Latin letters (1 ≤ |*s*| ≤ 100000).
none
abacaba
2
zzzzz
1
abcde
3
bcaccacaaabaacaabaaabcbbcbcaacacbcbaaaacccacbbcbaabcbacaacbabacacacaccbbccbcbacbbbbccccabcabaaab
8
daabcdabbabbacacbaacabacbcaabaacac
4
abghim
4
gfliflgfhhdkceacdljgkegmdlhcgkcmlelmbbbmdddgdeeljjhgbbffmemmmkhebgkhadkdajabcjkcgbkgbaeacdedlkklfech
17
a
1
aaabbb
4
ab
2
abbb
2
ob
2
abccba
3
saaaaaaaas
2
axxx
2
abcba
2
abb
2
abcdea
4
axcbb
3
tmivvdcbbfrfogjviirrximhttoskopwrcmkcborcxvr
13
dlchmmuateksgldkckljrovmeuniobjrelqjpnjljlvhpqrjsfklliqpufplgaelevmlcnodbllquubobecem
15
zx
2
zxz
2
bbhdgaefbhf
6
xx
1
zxx
2
cbcada
4
z
1
aab
2
jficc
3
cceeaabfba
5
jk
2
lzeznbwu
5
rr
1
from sys import stdin


def main():
	s = stdin.readline()
	size = len(s) - 1
	ans = size
	for i in range(26):
		low = 0
		high = size
		curr_ch = i
		while low < high:
			mid = (low + high) // 2
			count = 0
			for j in range(mid):
				if ord(s[j]) - ord('a') == curr_ch:
					count += 1
			if count == 0:
				ok = False
			else:
				ok = True
				for j in range(mid, size):
					if ord(s[j - mid]) - ord('a') == curr_ch:
						count -= 1
					if ord(s[j]) - ord('a') == curr_ch:
						count += 1
					if count == 0:
						ok = False
						break
			if ok:
				high = mid
			else:
				low = mid + 1
		ans = min(ans, low)
	print(ans)
	

if __name__ == '__main__':
	main()
