#include <bits/stdc++.h>
using namespace std;
int stak1[200010], tot1, stak0[200010], tot0;
int pre[200010], nex[200010];
char s[200010];
int a[200010];
int n, ans;
int stak_ans[200010], tot_ans;
int main() {
  int i, j, k;
  scanf("%s", s);
  n = strlen(s);
  for (i = 0; i < n; i++) a[i + 1] = s[i] == '1' ? 1 : 0;
  for (i = 1; i <= n; i++)
    if (a[i]) {
      if (!tot0) {
        printf("-1\n");
        return 0;
      }
      nex[stak0[tot0]] = i;
      pre[i] = stak0[tot0];
      tot0--;
      stak1[++tot1] = i;
    } else {
      if (tot1) {
        nex[stak1[tot1]] = i;
        pre[i] = stak1[tot1];
        tot1--;
      }
      stak0[++tot0] = i;
    }
  if (tot1) {
    printf("-1\n");
    return 0;
  }
  for (i = 1; i <= n; i++)
    if (!pre[i]) ans++;
  printf("%d\n", ans);
  for (i = 1; i <= n; i++)
    if (!pre[i]) {
      j = i, tot_ans = 0;
      while (j) {
        stak_ans[++tot_ans] = j;
        j = nex[j];
      }
      printf("%d ", tot_ans);
      for (j = 1; j <= tot_ans; j++) printf("%d ", stak_ans[j]);
      printf("\n");
    }
  return 0;
}
