#include <bits/stdc++.h>
using namespace std;
const int INFI = (1LL << 31) - 1;
const long long INFL = (1LL << 62);
const double eps = 1e-7;
const long double pi = acos(-1.0);
const int MAXN = int(1e6) + 10;
int flag[MAXN];
char a[MAXN];
int main() {
  cin >> a;
  int n = strlen(a);
  for (int i = 0; i < n; i++) {
    flag[n - i - 1] = (a[i] == '1');
  }
  for (int i = 0; i < n; i++) {
    if (flag[i]) {
      int j = i;
      while (j < n && flag[j]) j++;
      if (j - i >= 2) {
        flag[i] = -1;
        flag[j] = 1;
        for (int k = i + 1; k < j; k++) {
          flag[k] = 0;
        }
      }
      i = j - 1;
    }
  }
  int sl = 0;
  for (int i = 0; i <= n; i++) {
    sl += (flag[i] != 0);
  }
  cout << sl << '\n';
  for (int i = 0; i <= n; i++) {
    if (flag[i]) {
      if (flag[i] == 1) {
        cout << "+2^" << i << '\n';
      } else {
        cout << "-2^" << i << '\n';
      }
    }
  }
  return 0;
}
