#include <bits/stdc++.h>
using namespace std;
string S;
vector<pair<int, int> > V;
int main() {
  V.clear();
  cin >> S;
  S = "00" + S;
  int len = int((S).size());
  int res = 0;
  int K = 0, L = 0;
  if (S[int((S).size()) - 1] == '1') L++;
  for (int i = (len - 2); (i) >= (0); i--) {
    if (S[i] == '0') {
      if (S[i + 1] == '0') {
        K--;
        if (2 + K < L) {
          V.push_back(make_pair(len - (i + 1) - 1, 1));
          V.push_back(make_pair(len - (i + 1 + K + L) - 1, -1));
          for (int j = i + 2; (j) <= (i + 2 + (K + L - 1)); j++)
            if (S[j] == '0') V.push_back(make_pair(len - j - 1, -1));
        } else {
          for (int j = i + 2; (j) <= (i + 2 + (K + L - 1)); j++)
            if (S[j] == '1') V.push_back(make_pair(len - j - 1, 1));
        }
        res += (((2 + K) > (L)) ? (L) : (2 + K));
        K = 0;
        L = 0;
      } else {
        K++;
      }
    } else {
      L++;
    }
  }
  cout << res << endl;
  sort((V).begin(), (V).end());
  ;
  for (int i = 0; (i) < (int((V).size())); i++)
    cout << ((V[i].second == -1) ? "-" : "+") << "2^" << V[i].first << endl;
  return 0;
}
