#include <bits/stdc++.h>
char sr[1000010];
int p[1000010];
std::vector<int> ans;
int main() {
  scanf("%s", sr + 2);
  sr[0] = sr[1] = '0';
  int n = strlen(sr);
  for (int i = n - 1; i >= 0; i--) {
    p[n - i] = sr[i] - '0';
  }
  for (int i = 1; i <= n;) {
    if (!p[i]) {
      i++;
      continue;
    }
    int j = i;
    while (p[j]) j++;
    if (j - i >= 2) {
      ans.push_back(-i);
      p[j] = 1;
    } else
      ans.push_back(i);
    i = j;
  }
  printf("%d\n", ans.size());
  for (int i = ans.size() - 1; ~i; i--) {
    if (ans[i] > 0)
      printf("+2^%d\n", ans[i] - 1);
    else
      printf("-2^%d\n", -(ans[i] + 1));
  }
  return 0;
}
