#include <bits/stdc++.h>
using namespace std;
char s[2000006];
vector<int> v;
vector<pair<int, int> > v2;
int main() {
  scanf("%s", s);
  int n = strlen(s);
  reverse(s, s + n);
  int prev = -1;
  for (int i = 0; i < n; i++) {
    int x = s[i] - '0';
    if (x == prev)
      v[v.size() - 1]++;
    else {
      prev = x;
      v.push_back(1);
    }
  }
  if (s[0] == '0' && v.size() == 1) {
    printf("0");
    return 0;
  }
  int cur = 0;
  if (s[0] == '0') cur++;
  int sum = 0 + cur ? v[0] : 0;
  while (cur < v.size()) {
    if (v[cur] == 1) {
      v2.push_back(make_pair(1, sum));
      sum += v[cur];
      if (cur < v.size() - 1) sum += v[cur + 1];
      cur += 2;
      continue;
    }
    int x = cur + 2;
    v2.push_back(make_pair(0, sum));
    sum += v[cur];
    int y = sum;
    if (cur < v.size() - 1) sum += v[cur + 1];
    while (x < v.size() && v[x - 1] == 1) {
      v2.push_back(make_pair(0, sum - 1));
      cur = x;
      x += 2;
      sum += v[cur];
      y = sum;
      if (cur < v.size() - 1) sum += v[cur + 1];
    }
    v2.push_back(make_pair(1, y));
    cur += 2;
  }
  printf("%d\n", v2.size());
  for (int i = 0; i < v2.size(); i++) {
    if (v2[i].first)
      printf("+");
    else
      printf("-");
    printf("2^%d\n", v2[i].second);
  }
}
