#include <bits/stdc++.h>
std::string S;
std::deque<int> vs;
int main() {
  std::cin >> S;
  int ans = S.size();
  int prv = -1;
  int cnt = 0;
  S += '2';
  for (int i = (0); i < (S.size()); ++i) {
    if (S[i] == prv + '0')
      ++cnt;
    else if (prv != -1)
      vs.push_back(cnt), prv = S[i] - '0', cnt = 1;
    if (prv == -1) {
      prv = S[i] - '0';
      ++cnt;
    }
  }
  while (vs.size() >= 3) {
    for (int i = (1); i < (vs.size() - 1); ++i) {
      if (vs[i - 1] + vs[i + 1] > vs[i]) {
        vs[i + 1] = vs[i - 1] + vs[i + 1] - vs[i];
        vs.pop_front();
        vs.pop_front();
      } else if (vs[i - 1] + vs[i + 1] < vs[i]) {
        if (i + 2 < vs.size()) {
          vs[i + 2] = vs[i] - (vs[i - 1] + vs[i + 1]);
          vs.pop_front();
          vs.pop_front();
          vs.pop_front();
        } else {
          vs.push_back(vs[i] - (vs[i - 1] + vs[i + 1]));
          vs.pop_front();
          vs.pop_front();
          vs.pop_front();
        }
      }
    }
  }
  if (vs.size() == 2)
    ans -= vs[0] + vs[1] - 2 * std::min(vs[0], vs[1]);
  else
    ans -= vs[0];
  printf("%d\n", ans);
  return 0;
}
