#include <bits/stdc++.h>
using namespace std;
char s[int(1e6 + 5)];
vector<int> ans, sgn;
int main() {
  gets(s);
  int l = strlen(s);
  for (int i = l - 1; i >= 0;) {
    if (s[i] == '0') {
      i--;
      continue;
    }
    if (i == 0) {
      ans.push_back(l - 1);
      sgn.push_back(1);
      i--;
      continue;
    }
    if (s[i - 1] == '0') {
      ans.push_back(l - 1 - i);
      sgn.push_back(1);
      i -= 2;
      continue;
    }
    int j;
    for (j = i - 1; j >= 0; j--)
      if (s[j] == '0') {
        if (s[j - 1] == '0') {
          break;
        } else {
          ans.push_back(l - 1 - j);
          sgn.push_back(-1);
        }
      }
    ans.push_back(l - 1 - j);
    sgn.push_back(1);
    ans.push_back(l - 1 - i);
    sgn.push_back(-1);
    i = j - 1;
  }
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); i++) {
    if (sgn[i] > 0)
      putchar('+');
    else
      putchar('-');
    printf("2^%d\n", abs(ans[i]));
  }
  return 0;
}
