using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using static System.Console;
using System.Numerics;
using System.Text.RegularExpressions;
using System.Runtime.Serialization.Formatters.Binary;

namespace atcorder2
{
    [Serializable]
    static class  Program
    {
        public static long Read()
        {
            return long.Parse(Console.ReadLine());
        }

        public static long[] Reads()
        {
            return Console.ReadLine().Split().Select(long.Parse).ToArray();
        }


        public static long Gcd(long x,long y)
        {
            if (x < y) Gcd(y, x);
            while (y > 0)
            {
                var z = x;
                x = y;
                y = z % y;
            }
            return x;
        }

        public static long Lcm(long x,long y)
        {
            return x * y / Lcm(x, y);
        }

        public static bool IsLowercaseAlphabet(char target)
        {
            return new Regex("^[a-z]+$").IsMatch(target.ToString());
        }

        public static T DeepCopy<T>(this T src)
        {
            using (var memoryStream = new MemoryStream())
            {
                var binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(memoryStream, src);
                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                return (T)binaryFormatter.Deserialize(memoryStream);
            }
        }


        public static bool Prime(long n)
        {
            if (n < 2) return false;
            else if (n == 2) return true;
            else if (n % 2 == 0) return false;

            for (int i = 3; i <=Math.Sqrt(n); i++)
            {
                if (n % i == 0) return false;
            }
            return true;
        }
        


        static void Main(string[] args)
        {
            var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            Console.SetOut(sw);


            var s = ReadLine().ToArray();
            var d = new long['z'-'a'+1];
            for (int i = 0; i < s.Length; i++)
            {
                d[s[i]-'a']++;
            }
            long ans =long.MaxValue;
            
            for (int j = 0; j < d.Length; j++)
            {
                if (d[j] != 0)
                {              
                    var t=s.DeepCopy();
                    var memo = 0;
                    for (int k = s.Length; k > 0; k--)
                    {
                        var c = 0;
                        for (int i = 0; i < k; i++)
                        {
                            if (t[i] == (char)(j + 'a')) c++;
                        }
                        if (c == k)
                        {
                            break;
                        }
                        for (int i = 1; i < k; i++)
                        {
                            if (t[i] == (char)(j + 'a')) t[i - 1] = (char)(j + 'a');
                        }
                        memo++;
                    }
                    ans = Math.Min(memo, ans);
                }
            }
            WriteLine(ans);

           


            Console.Out.Flush();
        }
    }
}



Measured memory_bytes: 20060