#include <bits/stdc++.h>
using namespace std;
template <typename T>
void chmax(T &a, T b) {
  if (a < b) a = b;
}
signed main() {
  string s;
  cin >> s;
  int n = s.size();
  vector<int> o(n + 1, 0), z(n + 1, 0);
  int ot = 0, zt = 0;
  for (int i = n - 1; i >= 0; i--) {
    if (s[i] == '0')
      z[i] = ++zt;
    else {
      chmax(--zt, 0);
      z[i] = zt;
    }
  }
  for (int i = n - 1; i >= 0; i--) {
    if (s[i] == '1')
      o[i] = ++ot;
    else {
      chmax(--ot, 0);
      o[i] = ot;
    }
  }
  int ans = 0;
  ot = zt = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '0') {
      chmax(ans, ++zt);
      chmax(--ot, 0);
    } else if (s[i] == '1') {
      chmax(ans, ++ot);
      chmax(--zt, 0);
    } else {
      if (zt + z[i] > ot + o[i]) {
        chmax(ans, ++ot);
        chmax(--zt, 0);
      } else {
        chmax(ans, ++zt);
        chmax(--ot, 0);
      }
    }
  }
  cout << ans << endl;
}
