#include <bits/stdc++.h>
const int maxn = 1000010;
char s[maxn];
int ans[maxn], f[maxn], ans1[maxn], z0[maxn], flag[maxn];
int d;
int d1, d0, l, sum;
void dfs(int x) {
  ans[++d] = x;
  if (f[x]) dfs(f[x]);
}
int main() {
  scanf("%s", s + 1);
  l = strlen(s + 1);
  for (int i = 1; i <= l; i++)
    if (s[i] == '0') {
      if (!d1)
        flag[i] = 1, sum++;
      else
        f[ans1[d1]] = i, d1--;
      z0[++d0] = i;
    } else {
      if (!d0) {
        puts("-1");
        return 0;
      } else
        f[z0[d0]] = i, d0--;
      ans1[++d1] = i;
    }
  if (d1) {
    puts("-1");
    return 0;
  }
  printf("%d\n", sum);
  for (int i = 1; i <= l; i++)
    if (flag[i]) {
      d = 0;
      dfs(i);
      printf("%d", d);
      for (int j = 1; j <= d; j++) putchar(' '), printf("%d", ans[j]);
      puts("");
    }
}
