#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int MAXN = 2e5 + 10;
const int MAXM = 1e6 + 10;
char s[MAXN];
vector<int> vec[MAXN];
int main() {
  scanf("%s", s + 1);
  int len = strlen(s + 1);
  int tot = 0;
  int maxx = -1;
  for (int i = 1; i <= len; i++) {
    if (s[i] == '0') {
      vec[++tot].push_back(i);
    } else {
      if (tot == 0) {
        puts("-1");
        return 0;
      }
      vec[tot--].push_back(i);
    }
    maxx = max(maxx, tot);
  }
  if (maxx != tot) {
    puts("-1");
    return 0;
  }
  printf("%d\n", tot);
  for (int i = 1; i <= tot; i++) {
    printf("%d ", vec[i].size());
    for (int j = 0; j < vec[i].size(); j++) printf("%d ", vec[i][j]);
    printf("\n");
  }
  return 0;
}
