#include <bits/stdc++.h>
using namespace std;
ifstream f("test.in");
ofstream g("test.out");
vector<int> rasp[200005];
int k;
set<int> ones, zeros;
int main() {
  string s;
  cin >> s;
  s = ' ' + s;
  for (int i = 1; i < s.size(); i++) {
    if (s[i] == '0') {
      if (ones.empty()) {
        k++;
        rasp[k].push_back(i);
        zeros.insert(k);
      } else {
        int poz = *ones.begin();
        rasp[poz].push_back(i);
        ones.erase(poz);
        zeros.insert(poz);
      }
    } else {
      if (zeros.empty()) {
        cout << "-1";
        return 0;
      }
      int poz = *zeros.begin();
      rasp[poz].push_back(i);
      zeros.erase(poz);
      ones.insert(poz);
    }
  }
  if (!ones.empty()) {
    cout << "-1";
    return 0;
  }
  cout << k << '\n';
  for (int i = 1; i <= k; i++) {
    cout << rasp[i].size() << ' ';
    for (int j = 0; j < rasp[i].size(); j++) cout << rasp[i][j] << ' ';
    cout << '\n';
  }
  return 0;
}
