#include <bits/stdc++.h>
using namespace std;
vector<int> m, p;
int main() {
  string a;
  cin >> a;
  bool fullnb = 0;
  for (int i = a.size() - 1; i >= 0; i--) {
    if (a[i] == '1') {
      int sp = i;
      while (i >= 0 && a[i] == '1') {
        i--;
      }
      if (sp - i > 1) {
        if (i >= 0)
          a[i] = '1';
        else
          fullnb = 1;
        m.push_back(a.size() - sp - 1);
        for (; sp > i; sp--) a[sp] = '0';
        i++;
      }
    }
  }
  for (unsigned int i = 0; i < a.size(); i++) {
    if (a[i] == '1') {
      p.push_back(a.size() - i - 1);
    }
  }
  if (fullnb == 1) p.push_back(a.size());
  cout << m.size() + p.size() << '\n';
  for (int i = 0; i < p.size(); i++) {
    cout << "+2^" << p[i] << '\n';
  }
  for (int i = 0; i < m.size(); i++) {
    cout << "-2^" << m[i] << '\n';
  }
  return 0;
}
