#include <stdio.h>
#include <stdlib.h>

/// ENTER == 10 (ASCII KOD)

typedef struct nodes
{
    int value;
    struct nodes* next;
} node;

int numberOfElements(node* head)
{
    ///Vraca broj elemenata u listi
    node* temp = head;
    int i = 0;
    while(temp->next != NULL)
    {
        temp = temp->next;
        i++;
    }
    return i;
}

void printList(node* head)
{
    node* temp = head;
    int i = 0;                           /// Nije neophodno
    while(temp->next != NULL)
    {
        printf("%d. clan liste je %d\n", i, temp->value);     /// IZMENA ISPISA !!!
        i++;                                                 // Takodje nije neophodno
        temp = temp->next;
    }
}

int sum(int* a, int x, int y)
{
    int s = 0;
    for(int i = x+1; i < y; i++)
    {
        s += *(a+i);
    }
    return s;
}

int cvrst(int *a, int n)
{
    int cifre[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int t = 1;
    for(int i = 0; i < n; i++)
    {
        if(*(a+i) != -1 && cifre[*(a+i)] == 0)
        {
            cifre[*(a+i)] = 1;
        }
        else if(*(a+i) != -1)
        {
            t = 0;
            break;
        }
    }
    return t;
}

int main()
{
    int m = 0;
    node* n;
    n = (node*)malloc(sizeof(node));
    node* temp;
    temp = n;
    char c;
    do
    {
        scanf("%c", &c);
        if(c != 10)
        {
            temp->value = c - 48;
            temp->next = (node*)malloc(sizeof(node));
            temp = temp->next;
            temp->next = NULL;
            m++;
        }
    }while(c != 10);
    int a[m];
    temp = n;
    for(int i = 0; i < m; i++)
    {
        a[i] = temp->value;
        temp = temp->next;
    }

    int isti = 0;
    for(int i = 0; i < m; i++)
    {
        if(a[i] == a[i+1])
        {
            isti++;
        }
    }
    int cifre[m-isti], ponavljanjeCifara[m-isti];
    for(int i = 0; i < m-isti; i++)
        ponavljanjeCifara[i] = 0;
    int brojCifara = 0;
    cifre[0] = a[0];
    ponavljanjeCifara[0] = 1;
    for(int i = 1; i < m; i++)
    {
        if(a[i] == a[i-1])
        {
            ponavljanjeCifara[brojCifara]++;
        }
        else
        {
            cifre[++brojCifara] = a[i];
            ponavljanjeCifara[brojCifara]++;
        }
    }
    brojCifara++;

    int prvi = -1, drugi;
    int maks[4] = {0,0,0,0};     ///maks[0] - broj cifara izmedju, maks[1] - broj grupa cifara izmedju, maks[2, 3] - intervali
    int rez = 0;
    int l = 0;
    do
    {
        maks[0] = 0;
        maks[1] = 0;
        maks[2] = 0;
        maks[3] = 0;
        for(int i = 0; i < 10; i++)    ///odredjivanje intervala i ostalih elemenata u maks!!!
        {
            prvi = -1;
            drugi = -1;
            for(int j = 0; j < m-isti; j++)
            {
                if(cifre[j] == i)
                {
                    if(prvi == -1)
                    {
                        prvi = j;
                    }
                    else if(drugi == -1)
                    {
                        drugi = j;
                    }
                    else if(sum(ponavljanjeCifara, prvi, drugi) < sum(ponavljanjeCifara, drugi, j))
                    {
                        prvi = drugi;
                        drugi = j;
                    }
                    else if(sum(ponavljanjeCifara, prvi, drugi) == sum(ponavljanjeCifara, drugi, j) && drugi-prvi-1 < j-drugi-1)
                    {
                        prvi = drugi;
                        drugi = j;
                    }
                }
            }
            if(drugi == -1)
                drugi = prvi;
            if(sum(ponavljanjeCifara, prvi, drugi) > maks[0])
            {
                maks[0] = sum(ponavljanjeCifara, prvi, drugi);
                maks[1] = drugi - prvi - 1;
                maks[2] = prvi;
                maks[3] = drugi;
            }
            else if(sum(ponavljanjeCifara, prvi, drugi) == maks[0] && drugi-prvi-1 > maks[1])
            {
                maks[0] = sum(ponavljanjeCifara, prvi, drugi);
                maks[1] = drugi - prvi - 1;
                maks[2] = prvi;
                maks[3] = drugi;
            }
        }

        if(maks[0] < ponavljanjeCifara[maks[2]] && maks[0] < ponavljanjeCifara[maks[2]])
        {
            for(int i = maks[2]+1; i < maks[3]; i++)
            {
                cifre[i] = -1;
                rez += ponavljanjeCifara[i];
                ponavljanjeCifara[i] = 0;
            }
        }
        else if(ponavljanjeCifara[maks[2]] < ponavljanjeCifara[maks[3]])
        {
            cifre[maks[2]] = -1;
            rez += ponavljanjeCifara[maks[2]];
            ponavljanjeCifara[maks[2]] = 0;
        }
        else
        {
            cifre[maks[3]] = -1;
            rez += ponavljanjeCifara[maks[3]];
            ponavljanjeCifara[maks[3]] = 0;
        }
        l++;
    }while(cvrst(cifre, m-isti) == 0 && l <= m/2);

    printf("%d", rez);

    return 0;
}