#include <bits/stdc++.h>
using namespace std;
set<int> st[2];
const int maxn = 2e5 + 5;
char s[maxn];
vector<int> ans[maxn];
int cnt = 0;
int main() {
  scanf("%s", s + 1);
  int n = strlen(s + 1);
  for (int i = 1; i <= n; i++) {
    st[s[i] - '0'].insert(i);
  }
  while (st[0].size()) {
    ++cnt;
    int l = *st[0].begin();
    st[0].erase(l);
    ans[cnt].push_back(l);
    auto now = st[1].upper_bound(l);
    while (now != st[1].end()) {
      auto nxt = st[0].upper_bound(*now);
      if (nxt == st[0].end()) break;
      ans[cnt].push_back(*now);
      ans[cnt].push_back(*nxt);
      l = *nxt;
      st[1].erase(now);
      st[0].erase(nxt);
      now = st[1].upper_bound(l);
    }
  }
  if (st[1].size())
    puts("-1");
  else {
    printf("%d\n", cnt);
    for (int i = 1; i <= cnt; i++) {
      printf("%d ", ans[i].size());
      for (int x : ans[i]) printf("%d ", x);
      puts("");
    }
  }
  return 0;
}
