#(#(#((##((()))(((#)(#()#(((()()(()#(##(((()(((()))#(((((()(((((((()#((#((()(#(((()(()##(()(((()((#(
 (#((((()
 (#((
 ((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((##
 (())((((#)
 (#(
 (#))(#(#)((((#(##((#(#((((#(##((((((#((()(()(())((()#((((#((()((((#(((((#(##)(##()((((()())(((((#(((
 ##((((((()
 #((#
 #))))
 (((((#(#(#(#()
 ((#(()#(##
 (((((((((((((((((((###################
 )((##((###
 (((()#(#)(
 ((#)(
 )(((())#
 ()((#((#(#()
 ((#(
 ()#(#())()()#)(#)()##)#((()#)((#)()#())((#((((((((#)()()(()()(((((#)#(#((((#((##()(##(((#(()(#((#))#

-1
 -1
 -1
 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 3
 -1
 -1
 -1
 -1
 -1
 1
1
1
5
 1
1
1
1
 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 -1
 -1
 -1
 -1
 1
1
3
 -1
 -1

import java.io.*;
import java.util.*;
public final class treasure
{
	static Scanner sc=new Scanner(System.in);
	static PrintWriter out=new PrintWriter(System.out);
	
	public static void main(String args[]) throws Exception
	{
		char[] a=sc.next().toCharArray();
		int[] open=new int[a.length],close=new int[a.length];
		int cl=0,op=0,n=a.length,hash=0;
		for(int i=0;i<a.length;i++)
		{
			if(a[i]=='(')
			{
				op++;
			}
			else if(a[i]==')')
			{
				cl++;
			}
			else
			{
				hash++;
			}
			open[i]=op;
			close[i]=cl;
		}
		if(close[n-1]>open[n-1] || close[n-1]+hash>open[n-1])
		{
			out.println("-1");
		}
		else
		{
			List<Integer> list=new ArrayList<Integer>();
			boolean ans=true;
			int diff=open[n-1]-close[n-1];
			for(int i=0;i<n;i++)
			{
				if(a[i]=='#' && hash>1)
				{
					if(close[i]+1>open[i])
					{
						ans=false;
						break;
					}
					else
					{
						list.add(1);
					}
					hash--;
					diff--;
				}
				else if(a[i]=='#' && hash==1)
				{
					if(close[i]+diff>open[i])
					{
						ans=false;
						break;
					}
					else
					{
						list.add(diff);
					}
				}
			}
			if(ans)
			{
				for(int x:list)
				{
					out.println(x);
				}
			}
			else
			{
				out.println("-1");
			}
		}
		out.close();
	}
}