#include <bits/stdc++.h>
using namespace std;
namespace SHENZHEBEI {
const long long L = 2333333;
char SZB[L], *S = SZB, *T = SZB;
inline char gc() {
  if (S == T) {
    T = (S = SZB) + fread(SZB, 1, L, stdin);
    if (S == T) return '\n';
  }
  return *S++;
}
inline long long read() {
  long long x = 0, f = 1;
  char ch = gc();
  for (; !isdigit(ch); ch = gc())
    if (ch == '-') f = -1;
  for (; isdigit(ch); ch = gc()) x = x * 10 - 48 + ch;
  return x * f;
}
inline void write(long long x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) write(x / 10);
  putchar(x % 10 + '0');
}
inline char readchar() {
  char ch = gc();
  for (; isspace(ch); ch = gc())
    ;
  return ch;
}
inline long long readstr(char *s) {
  char ch = gc();
  long long cur = 0;
  for (; isspace(ch); ch = gc())
    ;
  for (; !isspace(ch); ch = gc()) s[cur++] = ch;
  s[cur] = '\0';
  return cur;
}
inline void writeln(long long x) {
  write(x);
  puts("");
}
}  // namespace SHENZHEBEI
using namespace SHENZHEBEI;
long long d1, d0, d, l, flag[1000010], sum;
char s[1000010];
long long z[1000010], f[1000010], zzz[1000010], ddd[1000010];
void dfs(long long x) {
  z[++d] = x;
  if (f[x]) dfs(f[x]);
}
int main() {
  scanf("%s", s + 1);
  l = strlen(s + 1);
  for (long long i = 1; i <= l; i++)
    if (s[i] == '1') {
      if (!d0) {
        puts("-1");
        return 0;
      } else
        f[ddd[d0]] = i, d0--;
      zzz[++d1] = i;
    } else {
      if (!d1)
        flag[i] = 1, sum++;
      else
        f[zzz[d1]] = i, d1--;
      ddd[++d0] = i;
    }
  if (d1) {
    puts("-1");
    return 0;
  }
  writeln(sum);
  for (long long i = 1; i <= l; i++)
    if (flag[i]) {
      d = 0;
      dfs(i);
      write(d);
      for (long long j = 1; j <= d; ++j) putchar(' '), write(z[j]);
      puts("");
    }
}
