#include <bits/stdc++.h>
const unsigned long long inf = 1LL << 61;
const double eps = 1e-5;
using namespace std;
bool cmp(int a, int b) { return a > b; }
string s;
int flag[1000000 + 10];
int main() {
  while (cin >> s) {
    int n = s.size();
    for (int i = 0; i < s.size(); i++)
      if (s[i] == '1') flag[n - 1 - i] = 1;
    for (int i = 0; i < n; i++) {
      if (flag[i] == 0) continue;
      int j = i;
      while (flag[j]) j++;
      if (j - i >= 2) {
        flag[i] = -1;
        for (int k = i + 1; k <= j; k++) flag[k] = 0;
        flag[j] = 1;
      }
      i = j - 1;
    }
    int num = 0;
    for (int i = 0; i <= n; i++) {
      if (flag[i] == 1 || flag[i] == -1) num++;
    }
    cout << num << endl;
    for (int i = 0; i <= n; i++) {
      if (flag[i] == 0) continue;
      if (flag[i] == 1)
        printf("+2^%d\n", i);
      else
        printf("-2^%d\n", i);
    }
  }
  return 0;
}
