#include #include #include #include using namespace std; string S; int A[1 << 18], dp[1 << 18][2]; int main() { cin >> S; assert(1 <= S.size() && S.size() <= 200000 && S[0] == '1'); for (int i = 0; i < S.size(); i++) assert(S[i] == '0' || S[i] == '1'); for (int i = 0; i < S.size(); i++) A[S.size() - 1 - i] = (S[i] - '0'); for (int i = 0; i <= S.size() + 1; i++) { dp[i][0] = (1 << 30); dp[i][1] = (1 << 30); } dp[0][0] = 0; for (int i = 0; i <= S.size(); i++) { for (int j = 0; j < 2; j++) { if (dp[i][j] == (1 << 30)) continue; for (int k = 0; k < 2; k++) { int ret = 0; if ((A[i] + j + k) % 2 == 1) ret++; if (k == 1) ret++; int s = 0; if (A[i] + j + k >= 2) s = 1; dp[i + 1][s] = min(dp[i + 1][s], dp[i][j] + ret); } } } cout << dp[S.size() + 1][0] << endl; return 0; }