#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10, L = 20, MOD = 1e9 + 7, M = 10 + 10;
const long long inf = 1e18 + 10;
pair<pair<int, int>, int> ans[N];
int ind = 0;
set<int> s0, s1;
set<int>::iterator it;
vector<int> v[N];
void make() {
  while (s1.size()) {
    if (s0.size() == 0) {
      cout << -1;
      exit(0);
    }
    int ret0 = (*s0.begin()), ret1 = (*s1.begin());
    if (ret1 < ret0) {
      cout << -1;
      exit(0);
    }
    v[ind].push_back(ret0), v[ind].push_back(ret1);
    s0.erase(ret0), s1.erase(ret1);
    while (1) {
      it = s0.lower_bound(ret1);
      if (it == s0.end()) {
        cout << -1;
        exit(0);
      }
      ret0 = (*it), v[ind].push_back(ret0);
      s0.erase(ret0);
      it = s1.lower_bound(ret0);
      if (it == s1.end()) {
        break;
      }
      ret1 = (*it);
      v[ind].push_back(ret1);
      s1.erase(ret1);
    }
    ind++;
  }
  while (s0.size()) {
    v[ind++].push_back((*s0.begin()));
    s0.erase(s0.begin());
  }
}
int main() {
  string s;
  cin >> s;
  int n = s.size();
  for (int i = 0; i < n; i++) {
    if (s[i] == '1')
      s1.insert(i);
    else
      s0.insert(i);
  }
  make();
  cout << ind << endl;
  for (int i = 0; i < ind; i++) {
    cout << (int)v[i].size() << " ";
    for (int j = 0; j < (int)v[i].size(); j++) {
      cout << v[i][j] + 1 << " ";
    }
    cout << endl;
  }
  return 0;
}
