#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base ::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long i, j, k, n, m, ans = 0, sum = 0, a[100005] = {0}, mn = 2e9, mx = 0,
                           x, y, z, cnt = 0;
  string s;
  set<long long> zero, one;
  set<long long>::iterator it, it1;
  vector<long long> v[200005];
  cin >> s;
  for (i = 0; i < s.size(); i++) {
    if (s[i] == '0') {
      zero.insert(i);
    } else {
      one.insert(i);
    }
  }
  while (one.size()) {
    i = -1;
    if (zero.size() == 0) {
      cout << -1;
      return 0;
    }
    it = zero.lower_bound(i);
    i = *it;
    zero.erase(i);
    v[ans].push_back(i);
    while (one.size()) {
      it = one.lower_bound(i);
      if (it == one.end()) {
        break;
      }
      i = *it;
      one.erase(i);
      v[ans].push_back(i);
      it = zero.lower_bound(i);
      if (it == zero.end()) {
        cout << -1;
        return 0;
      }
      i = *it;
      zero.erase(i);
      v[ans].push_back(i);
    }
    ans++;
  }
  k = ans + zero.size();
  cout << k << endl;
  for (i = 0; i < ans; i++) {
    for (j = 0; j < v[i].size(); j++) {
      if (j == 0) {
        cout << v[i].size() << " ";
      }
      cout << v[i][j] + 1 << " ";
    }
    cout << endl;
  }
  while (zero.size()) {
    it = zero.begin();
    cout << 1 << " " << *it + 1 << endl;
    zero.erase(it);
  }
  return 0;
}
