#include <bits/stdc++.h>
using namespace std;
char s[1020304];
pair<int, int> cache[1020304];
int main() {
  scanf("%s", s);
  int n = strlen(s);
  int i, j;
  int Tot = 0;
  for (i = j = 0; i < n;) {
    j = i;
    while (s[j + 1] == '1') ++j;
    cache[++Tot] = make_pair(i, j);
    i = j + 1;
    while (i < n && s[i] == '0') ++i;
    if (i == n) break;
  }
  int pre = 0;
  int ans = 0;
  for (int i = 1; i <= Tot; ++i) {
    if (i == 3) {
      int z = i;
    }
    if (!pre) {
      if (cache[i].second > cache[i].first)
        ++ans;
      else {
        ++ans;
        continue;
      }
    }
    if (cache[i + 1].first - cache[i].second <= 2 && i < Tot) {
      pre = 1;
      ++ans;
    } else {
      pre = 0;
      ++ans;
    }
  }
  pre = 0;
  cout << ans << endl;
  for (int i = 1; i <= Tot; ++i) {
    if (i == 3) {
      int z = i;
    }
    if (!pre) {
      if (cache[i].second > cache[i].first)
        printf("+2^%d\n", n - cache[i].first);
      else {
        printf("+2^%d", n - cache[i].first - 1);
        puts("");
        continue;
      }
    }
    if (cache[i + 1].first - cache[i].second <= 2 && i < Tot) {
      pre = 1;
      printf("-2^%d", n - cache[i + 1].first);
    } else {
      pre = 0;
      printf("-2^%d", n - 1 - cache[i].second);
    }
    puts("");
  }
  return 0;
}
