using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zadatak4
{
    class Program
    {
        static void Main(string[] args)
        {
            string broj = Console.ReadLine();
            string[] nizBroj = new string[broj.Length];
            for (int i = 0; i < broj.Length; i++)
            {
                nizBroj[i] = broj[i].ToString();
            }
            long duz = nizBroj.Length;
            bool[] mesta = new bool[10];
            long[] brPonavljanja = new long[10];
            long[] brMestaIzmedju = new long[10];
            long indeks = 0, brojac = 0;
            bool prvoponavljanje = false;
            for (int i = 0; i < duz; i++)
            {
                indeks = int.Parse(nizBroj[i]);
                brPonavljanja[indeks]++;
                if (brPonavljanja[indeks] == 2)
                    mesta[indeks] = true;
            }
            brojac = 0;
            for (int i = 0; i < duz; i++)
            {
                if (mesta[i])
                {
                    for (int j = 0; j < duz; j++)
                    {
                        if (!prvoponavljanje && int.Parse(nizBroj[j]) == i)
                        {
                            prvoponavljanje = true;
                            brojac++;
                        }
                        else if (int.Parse(nizBroj[j]) != i && brojac < brPonavljanja[i] && prvoponavljanje)
                        {
                            brMestaIzmedju[i]++;
                        }
                        else if (int.Parse(nizBroj[j]) == i)
                        {
                            brojac++; 
                        }
                    }
                    prvoponavljanje = false;
                    brojac = 0;
                }
            }
            Console.WriteLine(brMestaIzmedju.Max());
        }
    }
}