using System;

namespace Takmicenje_4
{
    class Program
    {
        static int ye(string N,int n, int m)
        {
            int svic = 0;
            int p = m;
            for(int i = n; i < p; i++)
            {
                try
                {
                    if (N.Substring(i, p - i + 1).IndexOf(N.Substring(i, 1)) != N.Substring(i, p - i + 1).LastIndexOf(N.Substring(i, 1)))
                    {
                        bool p1 = true;
                        if (N.Substring(i, p - i + 1).LastIndexOf(N.Substring(i, 1)) - i == 3)
                        {
                            if (N.Substring(i, 1) != N.Substring(i + 1, 1)) p1 = false;
                        }
                        else if (N.Substring(i, p - i + 1).LastIndexOf(N.Substring(i, 1)) - i > 3 || !p1)
                        {
                            for (int k = i; k < N.Substring(i, p - i + 1).LastIndexOf(N.Substring(i, 1)); k++)
                            {
                                if (N.Substring(k, 1) != N.Substring(k + 1, 1))
                                {
                                    if (k + 2 == N.Substring(i, p - i + 1).Length) p1 = false;
                                    else if (N.Substring(k + 1, 1) != N.Substring(k + 2, 1))
                                    {
                                        p1 = false;
                                    }
                                    else if (k + 1 != N.Substring(i, p - i + 1).IndexOf(N.Substring(k, 1))) p1 = false;
                                }
                            }
                        }
                        if (!p1)
                        {
                            bool q = true;
                            int lastindex = 0;
                            for (int j = p; j > N.LastIndexOf(N.Substring(i, 1)); j--)
                            {
                                if (N.Substring(p, m - p + 1).LastIndexOf(N.Substring(j, 1)) != N.Substring(i, p - i + 1).IndexOf(N.Substring(j, 1)))
                                {
                                    svic++;
                                    q = false;
                                    if (lastindex < N.Substring(i, p - i + 1).IndexOf(N.Substring(j, 1))) lastindex = N.Substring(i, p - i + 1).IndexOf(N.Substring(j, 1));
                                }
                            }
                            if (q) svic++;
                            q = true;
                            p = N.LastIndexOf(N.Substring(i, 1));
                            if (i < lastindex) i = lastindex;
                        }
                        else
                        {
                            if (N.Substring(i, p - i + 1).LastIndexOf(N.Substring(i, 1)) - i > 3)
                            {
                                for (int k = i+1; k < N.Substring(i, p - i + 1).LastIndexOf(N.Substring(i, 1))-1; k++)
                                {
                                    if (N.Substring(k, 1) != N.Substring(k + 1, 1))
                                    {
                                        if (i == 0 && p == m) return 2;
                                        else svic++;
                                    }
                                }
                            }
                            
                        }
                    }
                }catch(Exception e)
                {
                    Console.WriteLine(e.Message);
                    break;
                }
            }
            return svic;
        }
        static void Main(string[] args)
        {
            string N = Console.ReadLine();
            Console.WriteLine(ye(N, 0, N.Length-1));
        }
    }
}