#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000086;
char buf[MAXN], s[MAXN];
vector<pair<int, int> > tt;
int main() {
  int i, j, k;
  int m, n;
  int len;
  int c, e;
  scanf("%s", buf);
  len = strlen(buf);
  for (i = 0; i < len; ++i) s[i] = buf[len - 1 - i];
  s[i] = '\0';
  for (i = 0; i < len;) {
    if (s[i] == '0') {
      ++i;
    } else {
      for (j = i; j < len && s[j] == '1'; ++j)
        ;
      if (j - i == 1) {
        tt.push_back(make_pair((1), (i)));
        ++i;
      } else {
        tt.push_back(make_pair((-1), (i)));
        if (s[j + 1] == '1') {
          s[i = j] = '1';
        } else {
          tt.push_back(make_pair((1), (j)));
          i = j;
        }
      }
    }
  }
  printf("%d\n", tt.size());
  for (i = 0; i < tt.size(); ++i) {
    c = tt[i].first, e = tt[i].second;
    if (c == 1)
      printf("+2^%d\n", e);
    else
      printf("-2^%d\n", e);
  }
  return 0;
}
