#include <bits/stdc++.h>
using namespace std;
vector<pair<char, int> > ans;
const int MAXN = 1e6 + 10;
int a[MAXN];
int main() {
  string s;
  cin >> s;
  s = "00000" + s + "00000";
  int e = s.length() - 2;
  for (int i = 2; i < e; i++)
    if ((s[i] == '0' && s[i + 1] == '1' && s[i - 1] == '1') &&
        (s[i - 2] == '1' || s[i + 2] == '1')) {
      s[i] = '1';
      ans.push_back(make_pair('-', e - i - 4));
    }
  for (int i = 2; i < e; i++)
    if (s[i] == '1' && s[i + 1] == '0' && s[i - 1] == '0') {
      s[i] = '0';
      ans.push_back(make_pair('+', e - i - 4));
    }
  for (int i = 2; i < e; i++)
    if (s[i] == '1' && s[i - 1] == '0')
      ans.push_back(make_pair('+', e - 3 - i));
  for (int i = 2; i < e; i++)
    if (s[i] == '1' && s[i + 1] == '0')
      ans.push_back(make_pair('-', e - 4 - i));
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++)
    cout << ans[i].first << "2^" << ans[i].second << endl;
  return 0;
}
