#include <bits/stdc++.h>
using namespace std;
const int maxn = 200100;
char str[maxn];
bool vis[maxn];
int g[maxn];
vector<int> an;
vector<int> anl;
int main() {
  scanf("%s", str);
  memset(g, -1, sizeof(g));
  memset(vis, 0, sizeof(vis));
  int len = strlen(str);
  stack<int> st;
  for (int i = 0; i < len; i++) {
    if (str[i] == '0') {
      st.push(i);
    } else {
      if (st.empty()) {
        puts("-1");
        return 0;
      }
      g[st.top()] = i;
      st.pop();
    }
  }
  st = stack<int>();
  for (int i = (len - 1); i >= 0; i--) {
    if (str[i] == '0') {
      st.push(i);
    } else {
      if (st.empty()) {
        puts("-1");
        return 0;
      }
      g[i] = st.top();
      st.pop();
    }
  }
  for (int i = 0; i < len; i++) {
    if (vis[i]) continue;
    int t = i;
    an.push_back(t + 1);
    int cnt = 1;
    vis[t] = true;
    while (g[t] != -1) {
      t = g[t];
      an.push_back(t + 1);
      cnt++;
      vis[t] = true;
    }
    anl.push_back(cnt);
  }
  printf("%d\n", (int)anl.size());
  int p = 0;
  for (int i = 0; i < anl.size(); i++) {
    int tlen = anl[i];
    printf("%d", tlen);
    for (int j = 0; j < tlen; j++) {
      printf(" %d", an[p++]);
    }
    putchar('\n');
  }
  return 0;
}
