#include <bits/stdc++.h>
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
using namespace std;
int inputValue() {
  int a;
  cin >> a;
  return a;
};
template <typename T>
void inputArray(T* p, int a) {
  for (int i = (0); i < (a); i++) {
    cin >> p[i];
  }
};
template <typename T>
void inputVector(vector<T>* p, int a) {
  for (int i = (0); i < (a); i++) {
    T input;
    cin >> input;
    p->push_back(input);
  }
}
template <typename T>
void output(T a, int precision = 0) {
  if (precision > 0) {
    cout << setprecision(precision) << a << "\n";
  } else {
    cout << a << "\n";
  }
}
string S;
int N;
set<int> used;
set<int> unused;
set<int> last_used;
vector<pair<char, int>> tree;
int del() {
  int count = 0;
  set<int> last;
  if (last_used.empty() || true) {
    for (int i = (0); i < (N); i++) {
      auto it = unused.lower_bound(i);
      i = *(it);
      auto it1 = next(it);
      if (it1 == unused.end()) break;
      auto in1 = *(next(it));
      if (S[i] != S[in1]) {
        count += 2;
        used.insert(i);
        used.insert(in1);
        last.insert(i);
        last.insert(in1);
        unused.erase(i);
        unused.erase(in1);
        i = in1;
      }
    }
  }
  return count;
}
int main(int argc, const char* argv[]) {
  cin >> S;
  N = S.length();
  for (int i = (0); i < (N); i++) {
    unused.insert(i);
  }
  int ans = 0;
  while (true) {
    int c = del();
    ans += c;
    if (c == 0) break;
  }
  output(ans);
  return 0;
}
