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

namespace Kvalifikacije_2
{
    class Guster
    {
        static int najveciRed(List<StringBuilder> zmija)
        {
            int max = 0;
            foreach(StringBuilder red in zmija) {
                if (red.Length > max) {
                    max = red.Length;
                }
            }
            return max;
        }

        static string kolona(int j, List<StringBuilder> zmija)
        {
            StringBuilder kolona = new StringBuilder();
            for(int i = 0; i < zmija.Count; i++) {
                kolona.Append(zmija[i][j]);
            }
            return kolona.ToString();
        }

        static void Main()
        {
            //Korak 1 - ucitavmo string

            string s = Console.ReadLine();

            //Korak 2 - pravimo zmiju

            List<StringBuilder> zmija = new List<StringBuilder>();
            int iRastojanje = int.MaxValue;
            int noviRed = int.MaxValue;
            int br = 0;
            int n = s.Length;
            zmija.Add(new StringBuilder());

            for(int i = 0; i < n; i++) {
                br++;
                for(int j = 1; j < s.Count(slovo => slovo == s[i]); j++) {
                    int iSledi = s.IndexOf(s[i], i);
                    if (((iSledi - i) % 2 != 0 || iSledi-i==0) && iSledi-i < iRastojanje) {
                        iRastojanje = iSledi - i;
                        noviRed = iRastojanje / 2 + 1;
                        br = 0;
                    }
                }
                if (noviRed - br == 0) {
                    zmija.Add(new StringBuilder());
                }
                zmija[zmija.Count - 1].Append(s[i]);
            }

            int max = najveciRed(zmija);
            for(int i = 0; i < zmija.Count; i++) {
                for (int j = zmija[i].Length; j < max; j++) {
                    zmija[i].Insert(0, " ");
                }

                if (i % 2 != 0) {
                    string red = zmija[i].ToString().Reverse().ToString();
                    zmija[i] = new StringBuilder();
                    zmija[i].Append(red);
                }
            }

            //Korak 3 - Brojimo koliko ima slova koji su direktno jedno ispod drugo u redovima od 0 - max

            int zmijaSkor = 0;
            for(int j = 0; j < max; j++) {
                foreach (StringBuilder red in zmija) {
                    string deo = kolona(j, zmija);
                    for(int i = 0; i < zmija.Count - 1; i++) {
                        if(deo[i] != ' ' && deo[i] == deo[i + 1]) {
                            zmijaSkor++;
                        }
                    }
                }
            }

            //Korak 4 - ispisujemo zmija skor

            Console.WriteLine(zmijaSkor);
        }
    }
}