#include <bits/stdc++.h>
using namespace std;
char str[200001];
vector<vector<int> > v;
set<int> zero, one;
int main() {
  scanf("%s", str + 1);
  int len = strlen(str + 1);
  zero.clear();
  one.clear();
  for (int i = 1; i <= len; i++) {
    if (str[i] == '0') {
      zero.insert(i);
    } else {
      one.insert(i);
    }
  }
  while (zero.size()) {
    int a = zero.size(), b = one.size();
    int i = *zero.begin();
    zero.erase(zero.begin());
    vector<int> tmp;
    while (1) {
      tmp.push_back(i);
      set<int>::iterator j = one.upper_bound(i);
      if (j == one.end()) break;
      set<int>::iterator k = zero.upper_bound(*j);
      if (k == zero.end()) break;
      tmp.push_back(*j);
      one.erase(j);
      i = *k;
      zero.erase(k);
    }
    if (a == zero.size() && b == one.size()) break;
    v.push_back(tmp);
  }
  if (one.size() == 0 && zero.size() == 0) {
    cout << v.size() << endl;
    for (int i = 0; i < v.size(); i++) {
      cout << v[i].size();
      for (int j = 0; j < v[i].size(); j++) {
        cout << " " << v[i][j];
      }
      cout << endl;
    }
  } else {
    cout << "-1" << endl;
  }
  return 0;
}
