#include<bits/stdc++.h>
using namespace std;
#define N 100005
int read(){
	int w=0,f=1;
	char c=' ';
	while(c<'0'||c>'9')c=getchar(),f=c=='-'?-1:f;
	while(c>='0'&&c<='9')w=w*10+c-48,c=getchar();
	return w*f;
}
struct node{
	int l,r;
	node(int L,int R){l=L,r=R;}
	node(){l=r=0;}
}c[N],ans[N];
int n,a[N],b[N],cnt;
char s[N];
void print(){
	int x=0,it=0;
	for(int i=1;i<=cnt&&!x;i++)
		if(ans[i].l>ans[i+1].l)x=i,it=i+1;
	printf("%d\n",cnt);
	for(int i=1;i<=x;i++){
		while(it<=cnt&&ans[it].l<ans[i].l)printf("%d ",ans[it].r-ans[it].l+1),it++;
		printf("%d%c",ans[i].r-ans[i].l+1,i==x&&it==cnt?'\n':' ');
	}
	while(it<=cnt)printf("%d%c",ans[it].r-ans[it].l+1,it==cnt?'\n':' '),it++;
	exit(0);
}
bool check(){
	for(int i=2;i<n;i++)
		if(!a[i]&&!(a[i-1]&&a[i+1]))return 0;
	return 1;
}
void solve(int k){
	for(int i=1;i<=n;i++)
		a[i]=b[i];
	for(int i=1;i<=n;i++)
		if(a[i]&&!a[i-1])
			for(int j=i-k;j<=i-1;j++){
				if(a[j])return;
				a[j]=1;
			}
	int tot=0;
	for(int i=1;i<=n-k;i++)
		if(!a[i]){
			int j=i+1;
			while(j<=n-k&&!a[j])j++;
			j--,c[++tot]=node(i,j),i=j;
		}
	if(c[1].l==1)c[1].l--;
	if(c[tot].r==n-k)c[tot].r++;
	if(k==1){
		for(int i=1;i<=tot;i++)
			if(!((c[i].r-c[i].l+1)&1))return;
		for(int i=1;i<=cnt;i++)
			ans[i].l-=k;
		for(int i=1;i<=tot;i++)
			for(int j=1;j<=(c[i].r-c[i].l)/2;j++)
				ans[++cnt]=node(c[i].l+j*2-1,c[i].l+j*2-1);
		print();
	}
	for(int i=1;i<=tot;i++)
		if(c[i].r-c[i].l+1==2)return;
	for(int i=1;i<=cnt;i++)
		ans[i].l-=k;
	for(int i=1;i<=tot;i++){
		if((c[i].r-c[i].l+1)&1){
			for(int j=1;j<=(c[i].r-c[i].l+1)/2;j++)
				ans[++cnt]=node(c[i].l+j*2-1,c[i].l+j*2-1);
		}
		else{
			for(int j=1;j<=(c[i].r-c[i].l+1)/2-2;j++)
				ans[++cnt]=node(c[i].l+j*2-1,c[i].l+j*2-1);
			ans[++cnt]=node(c[i].r-2,c[i].r-1);
		}
	}
	print();
}
signed main(){
	scanf("%s",s+1);
	n=strlen(s+1);
	for(int i=1;i<=n;i++)
		a[i]=b[i]=s[i]=='#'?1:0;
	int l=n+1,r=n+1;
	for(int i=1;i<=n;i++)
		if(a[i])l=min(l,i-1),r=min(r,n-i);
	for(int i=1;i<=n;i++){
		if(a[i]){
			int j=i+1;
			while(j<=n&&a[j])j++;
			j--,ans[++cnt]=node(i,j),i=j;
		}
	}
	if(l==n+1)return puts("0\n"),0;
	if(!l&&!r){
		if(check())print();
		return puts("-1"),0;
	}
	if(!l||!r)return puts("-1"),0;
	if(min(l,r)==1)return solve(1),puts("-1"),0;
	if(min(l,r)==2)return solve(2),puts("-1"),0;
	if(l==3)return solve(1),solve(3),puts("-1"),0;
	if(l&1)return solve(1),solve(2),solve(3),puts("-1"),0;
	solve(2),solve(3),puts("-1");
	return 0;
}