/* ex 9_2
   KKOO */

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

#define SIZE 100001

//リストのノード（スタック内の各データ）の定義
typedef struct node{
    char elem;
    struct node *next;
} node;

//スタックにデータを追加
void push(node **first, char elem){
    //追加する分の領域を確保
    node *new = calloc(1, sizeof(node));
    if(new == NULL) exit(1);
    new->elem = elem;
    new->next = *first;
    *first = new;
}

//スタックからデータを取り出す
char pop(node **first){
    char elem;
    node *tmp = *first;
    if(tmp == NULL) exit(1);
    elem = tmp->elem;
    *first = tmp->next;
    //取り出したノードのメモリを解放
    free(tmp);
    return elem;
}

int main(void){
    char decoy, cube[SIZE];
    int num, count=0, ans=0;
    //最初のノードの指す先
    node *first = NULL;
    node ptr = *first;
    node head = ptr;

    scanf("%s", cube);
    num = strlen(cube);

    for(int i=0; i<num; i++){
        //スタックにノードを追加
        push(&first, cube[i]);
    }

    while(ans != num){
        ptr = head;
        while(ptr.next != first){
            if((ptr.elem == '0' && ptr.next->elem == '1') || (ptr.elem == '1' && ptr.next->elem == '0')){
                //スタックからデータを取り出す
                decoy = pop(&ptr);
                decoy = pop(&ptr.next);
                count += 2;
                break;
            }
            else ptr = *ptr.next;
        }
        if(ans == count) break;
        else ans = count;
    }

    printf("%d\n", ans);

    return 0;
}
