#include <bits/stdc++.h>
using namespace std;
const int SZ = 52;
const double EPS = 1e-9;
const int MOD = 100000008;
const int INF = (1 << 30) - 1;
const double PI = 2 * acos(0.0);
template <class T>
T MIN(T a, T b) {
  return (a < b) ? a : b;
}
template <class T>
T MAX(T a, T b) {
  return (a > b) ? a : b;
}
template <class T>
void SWAP(T &a, T &b) {
  T c;
  c = a;
  a = b;
  b = c;
}
template <class T>
T GCD(T a, T b) {
  T c;
  while (b > 0) {
    c = a % b;
    a = b;
    b = c;
  }
  return a;
}
bool CMP(int a, int b) { return (a > b); }
void solve(string s) {
  long long i, j, cnt = 0, len = s.size();
  bool flag = false;
  reverse(s.begin(), s.end());
  for (i = 0; i < len - 1; i++) {
    if (s[i] == '0') {
      cnt++;
    } else {
      cnt += 2;
      flag = false;
      for (j = i + 1; j < len && !flag; j++) {
        if (s[j] == '0') {
          s[j] = '1';
          flag = true;
        } else {
          s[j] = '0';
        }
      }
      if (!flag) {
        s += '1';
        len++;
      }
    }
  }
  cout << cnt << endl;
}
int main() {
  string a;
  cin >> a;
  solve(a);
  return 0;
}
