#include <bits/stdc++.h>
using namespace std;
char s[1 << 20];
int n;
int f[1 << 20][2];
int c[1 << 20][2];
int main() {
  scanf("%s", s + 1);
  s[0] = '0';
  n = strlen(s);
  for (int i = 0, ThxDem = n; i < ThxDem; ++i) s[i] -= '0';
  f[0][0] = 0;
  f[0][1] = 1;
  c[0][0] = 0;
  c[0][1] = 1;
  for (int i = 1, ThxDem = n; i < ThxDem; ++i)
    for (int k = 0, ThxDem = 2; k < ThxDem; ++k) {
      f[i][k] = 1 << 30;
      if (k == s[i]) {
        if (f[i - 1][k] < f[i][k]) f[i][k] = f[i - 1][k], c[i][k] = 0;
      }
      if (k != s[i]) {
        if (1 + f[i - 1][0] < f[i][k]) f[i][k] = 1 + f[i - 1][0], c[i][k] = 1;
      }
      if (k != s[i]) {
        if (1 + f[i - 1][1] < f[i][k]) f[i][k] = 1 + f[i - 1][1], c[i][k] = 2;
      }
    }
  printf("%d\n", f[n - 1][0]);
  int i = n - 1, k = 0;
  while (i >= 0) {
    if (c[i][k] == 1)
      printf("+2^%d\n", n - 1 - i), k = 0;
    else if (c[i][k] == 2)
      printf("-2^%d\n", n - 1 - i), k = 1;
    i--;
  }
  return 0;
}
