#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000010;
char s[MAXN];
int n;
int opos[MAXN], sum[MAXN];
int pre[MAXN];
int m;
void init(void) {
  scanf("%s", s);
  n = strlen(s);
  m = 1;
  sum[0] = 0;
  opos[0] = 0;
  int cur_sum = 0;
  for (int i = 0; i < n; ++i)
    if (s[i] == '1') {
      opos[m] = i + 1;
      sum[m++] = cur_sum;
    } else
      ++cur_sum;
}
void solve(void) {
  int pf = 0, idx = 0, lf = 1;
  pre[1] = 1;
  for (int i = 2; i < m; ++i) {
    int cur;
    if (lf + 1 > pf + 2 + sum[i]) {
      cur = pf + 2 + sum[i];
      pre[i] = idx + 1;
    } else {
      cur = lf + 1;
      pre[i] = i;
    }
    if (lf - sum[i] < pf) {
      pf = lf - sum[i];
      idx = i - 1;
    }
    lf = cur;
  }
  printf("%d\n", lf);
  for (int idx = m - 1; idx; idx = pre[idx] - 1) {
    if (idx == pre[idx]) {
      printf("+2^%d\n", n - opos[idx]);
      continue;
    }
    printf("+2^%d\n", n - opos[pre[idx]] + 1);
    for (int j = opos[pre[idx]]; j <= opos[idx]; ++j)
      if (s[j - 1] == '0') printf("-2^%d\n", n - j);
    printf("-2^%d\n", n - opos[idx]);
  }
}
int main(void) {
  init();
  solve();
  return 0;
}
