#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(const T a) {
  return a > 0 ? a : -a;
}
const double PI = 2.0 * acos(1.0);
int n;
int m;
char s[2000001];
vector<int> ans;
int main() {
  gets(s);
  n = strlen(s);
  for (int i = 0; i < n;) {
    while (i < n && s[i] != '1') i++;
    int j = i;
    while (j < n) {
      if (s[j] == '0' && (j + 1 == n || s[j + 1] == '0')) {
        break;
      }
      j++;
    }
    int res1 = 0;
    for (int k = i; k < j; k++)
      if (s[k] == '1') res1++;
    int res2 = 2 + j - i - res1;
    if (res1 <= res2) {
      for (int k = i; k < j; k++)
        if (s[k] == '1') ans.push_back(n - k);
    } else {
      ans.push_back(n - i + 1);
      ans.push_back(-(n - j + 1));
      for (int k = i; k < j; k++)
        if (s[k] == '0') ans.push_back(-(n - k));
    }
    i = j;
  }
  cout << ((int)(ans).size()) << endl;
  for (int i = 0; i < (((int)(ans).size())); i++) {
    if (ans[i] > 0)
      printf("+");
    else
      printf("-");
    printf("2^%d\n", abs(ans[i]) - 1);
  }
  return 0;
}
