#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200000 + 10000;
int n, k;
char s[MAXN];
set<int> s0, s1;
vector<vector<int> > ans;
void no() {
  cout << -1 << endl;
  exit(0);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> (s + 1);
  n = strlen(s + 1);
  for (int i = 1; i <= n; i++)
    if (s[i] == '0')
      s0.insert(i);
    else
      s1.insert(i);
  k = s0.size() - s1.size();
  if (k <= 0) no();
  for (int t = 1; t <= k; t++) {
    vector<int> tmp;
    if (s0.size() == 0) no();
    int cur = *s0.begin();
    tmp.push_back(cur);
    s0.erase(cur);
    while (true) {
      set<int>::iterator it1 = s1.lower_bound(cur + 1);
      if (it1 == s1.end()) break;
      int p1 = *it1;
      set<int>::iterator it0 = s0.lower_bound(p1 + 1);
      if (it0 == s0.end()) break;
      int p0 = *it0;
      tmp.push_back(p1), tmp.push_back(p0);
      s1.erase(it1), s0.erase(it0);
      cur = p0;
    }
    ans.push_back(tmp);
  }
  if (s0.size() > 0 || s1.size() > 0) no();
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++) {
    vector<int> tmp = ans[i];
    cout << tmp.size() << ' ';
    for (int j = 0; j < tmp.size(); j++) cout << tmp[j] << ' ';
    cout << endl;
  }
  return 0;
}
