#include #include #include using namespace std; typedef long long LL; typedef pair PII; const int N = 200010; string s; vector vec; LL cost[N], gap[N], ps[N], f[N]; int main() { // freopen("apple.in", "r", stdin); // freopen("apple.out", "w", stdout); cin >> s; int n = s.size(); s = ' ' + s; for (int l = 1; l <= n; ) { while (l <= n && s[l] == '0') ++l; if (l > n) break; int r = l; while (r < n && s[r + 1] == s[l]) ++r; vec.push_back({ l, r }); l = r + 1; } if (vec.empty()) { puts("0"); return 0; } for (int i = 0; i < vec.size(); ++i) { cost[i] = min(2, vec[i].second - vec[i].first + 1); } for (int i = 1; i < vec.size(); ++i) { gap[i] = vec[i].first - vec[i - 1].second - 1; ps[i] = ps[i - 1] + gap[i]; } LL best = 0LL; f[0] = cost[0]; for (int i = 1; i < vec.size(); ++i) { best = min(best, f[i - 1] - ps[i]); f[i] = f[i - 1] + cost[i]; f[i] = min(f[i], best + ps[i] + 2); } printf("%lld\n", f[vec.size() - 1]); return 0; }