#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 20001


typedef struct stack{
  int f;
  int s;
} Sta;

void push(int S[], int x, int *top){
  S[(*top)++] = x;
}

int pop(int S[], int *top){
  (*top)--;
  return S[*top];
}

void push2(Sta S[], int x, int y, int *top){
  S[*top].f = x;
  S[(*top)++].s = y;
}

void uni(Sta S[], int *top){
  int i;

  for( i = (*top)-1 ; i > 0 ; i-- ){
    if( S[i].f < S[i-1].f ){
      (*top)--;
      S[i-1].f = S[i].f;
      S[i-1].s += S[i].s;
    }
  }
}


int main(){
  int top1=0, top2=0;
  int S1[MAX];
  Sta S2[MAX];
  int i, j, x, sum=0, cnt=0;
  char s[MAX];

  scanf("%s",s);

  for( i = 0 ; i < strlen(s) ; i++ ){
    if( s[i] == '\\' ){
      push(S1, i, &top1);
      continue;
    }
    else if( s[i] == '/' ){
      if( top1 == 0 ) continue;
      x = pop(S1, &top1);
      sum += (i - x);
      push2(S2, x, i-x, &top2);
      uni(S2, &top2);
      continue;
    }
  }


  printf("%d\n",sum);
  if( top2 == 0 ) printf("%d\n", top2);
  else{
    cnt = top2;
    printf("%d ",cnt);
    for( i = 0 ; i < top2 - 1 ; i++ ){
      printf("%d ", S2[i].s);
    }
    printf("%d\n", S2[top2-1].s);
  }

  return 0;
}

