#include <bits/stdc++.h>
template <typename T>
void fin(T const& t) {
  std::cout << t << std::endl;
  exit(0);
}
int main() {
  std::cin.tie(0);
  std::ios::sync_with_stdio(false);
  std::string s;
  std::cin >> s;
  int a0 = 0, a1 = 1, b0 = 0, b1 = -1;
  int c0 = a0 - b0, c1 = a0 - b1, c2 = a1 - b0, c3 = a1 - b1;
  for (auto c : s) {
    if (c == '0') {
      --a0;
      --a1;
      --b0;
      --b1;
    } else if (c == '1') {
      ++a0;
      ++a1;
      ++b0;
      ++b1;
    } else {
      --a0;
      --a0;
      ++b0;
      ++b1;
    }
    if (a0 < 0) a0 += 2;
    if (a1 < 0) a1 += 2;
    if (b0 > 0) b0 -= 2;
    if (b1 > 0) b1 -= 2;
    c0 = std::max(c0, a0 - b0);
    c1 = std::max(c1, a0 - b1);
    c2 = std::max(c2, a1 - b0);
    c3 = std::max(c3, a1 - b1);
  }
  fin(std::min(std::min(c0, c1), std::min(c2, c3)));
  return 0;
}
