#include <bits/stdc++.h>
template <class T>
bool read(T &x) {
  char *s;
  s = (char *)malloc(10);
  if (sizeof(x) == 1)
    strcpy(s + 1, " %c");
  else if (sizeof(x) == 4)
    strcpy(s + 1, "%d");
  else if (sizeof(x) == 8)
    strcpy(s + 1, "%lld");
  int k = scanf(s + 1, &x);
  free(s);
  return k != -1;
}
using namespace std;
char s[2000000];
int sz1, sz2, len, pos[2000000], neg[2000000];
int main() {
  scanf("%s", s + 1);
  len = strlen(s + 1);
  s[0] = '0';
  for (int i = len; i >= 0; i--) {
    if (s[i] == '0') continue;
    if (s[i] == '2') {
      s[i - 1]++;
      continue;
    }
    if (s[i] == '1' and i > 0 and s[i - 1] == '1') {
      neg[++sz2] = len - i;
      s[i - 1]++;
      continue;
    }
    pos[++sz1] = len - i;
  }
  cout << sz1 + sz2 << endl;
  for (int i = 1; i <= sz1; i++) printf("+2^%d\n", pos[i]);
  for (int i = 1; i <= sz2; i++) printf("-2^%d\n", neg[i]);
}
