using System;

namespace GUSTER
{

    class Program
    {
        static int maxskor = 0, minx = 3000, maxx = 3000, maxy = 0;
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            string t = s;
            char[,] matrix = new char[1500, 6000];
            skor(s, matrix, 0, 3000);
            Console.WriteLine(maxskor);
        }

        static int skor(string s, char[,] matrix, int red, int kolona)
        {
            int skor1 = 0;
            if (s.Length == 0)
            {
                for (int m = minx; m <= maxx; m++)
                {
                    for (int n = 1; n < maxy; n++)
                    {
                        if (Char.IsLetter(matrix[n, m]) && matrix[n - 1, m] == matrix[n, m])
                        {
                            skor1++;
                        }
                    }
                }
                if (skor1 > maxskor)
                {
                    maxskor = skor1;
                }
                for(int i = minx; i <= maxx; i++)
                {
                    matrix[red, i] = '\0';
                }
                return skor1;
            }

            int znak;
            if (red % 2 == 0)
            {
                znak = 1;
            }
            else
            {
                znak = -1;
            }

            if (s.Length <= 3)
            {
                int j = 0;
                while (j < s.Length)
                {
                    matrix[red, kolona + znak * j] = s[j];
                    j++;
                }
                j--;
                if (kolona + znak * j > maxx)
                {
                    maxx = kolona + znak * j;
                }
                if (kolona + znak * j < minx)
                {
                    minx = kolona + znak * j;
                }
                maxy = red + 1;
                skor("", matrix, red + 1, kolona + znak * j);
                for (int i = minx; i <= maxx; i++)
                {
                    matrix[red, i] = '\0';
                }
                return 0;
            }

            for (int i = 2; i < s.Length - 1; i++)
            {
                int j = 0;
                while (j < i)
                {
                    matrix[red, kolona + znak * j] = s[j];
                    j++;
                }
                j--;
                if (kolona + znak * j > maxx)
                {
                    maxx = kolona + znak * j;
                }
                if (kolona + znak * j < minx)
                {
                    minx = kolona + znak * j;
                }
                maxy = red + 1;
                skor(s.Substring(i), matrix, red + 1, kolona + znak * j);
            }
            for (int i = minx; i <= maxx; i++)
            {
                matrix[red, i] = '\0';
            }
            return 0;
        }
    }
}