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

-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

//ackage src;

import java.util.Scanner;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.StringBuilder;
import java.math.BigInteger;

public class idk {
	static Scanner scn = new Scanner(System.in);
	static int mod = 1000000007;

	public static void main(String[] args) {
		String str=scn.next();
		int n=str.length(),count=0,indh=0,indo=n;
		Stack<Character>stk=new Stack<Character>();
		boolean bl=true;
		for(int i=0;i<n;i++)
		{
			if(str.charAt(i)=='(')
			{
				stk.push(str.charAt(i));
				indo=i;
			}
			else if(str.charAt(i)=='#')
			{
				if(stk.isEmpty())
				{
					bl=false;
					break;
				}
				indh=i;
				count++;
			}
			else 
			{
				if(!stk.isEmpty()&&stk.peek()=='(')
				{
					stk.pop();
				}
				else
				{
					bl=false;
					break;
				}
			}
				
		}
		if(bl)
		{
			if(stk.size()<count||(indh<indo))
				System.out.println("-1");
			else
			{
				for(int i=0;i<count-1;i++)
				{	
					System.out.println("1");
				}
				System.out.println(stk.size()-count+1);
			}
		}
		else
			System.out.println("-1");
	}

	public static int decode(String str, int i, int[] memo) {
		if (i == 0) {
			return 1;
		}
		int ind = str.length() - i;
		if (str.charAt(ind) == '0')
			return 0;
		if (memo[i] != -1)
			return memo[i];
		int res = decode(str, i - 1, memo);
		if (i >= 2 && Integer.parseInt(str.substring(ind, ind + 2)) <= 26) {
			res += decode(str, i - 2, memo);
		}
		memo[i] = res;
		return res;
	}

	public static String binary(long n) {
		StringBuilder sb = new StringBuilder();
		while (n != 0) {
			sb.append(n % 2);
			n /= 2;
		}
		sb.reverse();
		return sb.toString();
	}

	public static long gcd(long a, long b) {
		if (a == 0)
			return b;
		return gcd(b % a, a);
	}

	public static String factorial(int n) {
		BigInteger fac = new BigInteger("1");
		for (int i = 1; i <= n; i++) {
			fac = fac.multiply(BigInteger.valueOf(i));
		}
		return fac.toString();
	}

}

class pair {
	int a;
	int b;
	int c;

	pair(int x, int y, int z) {
		this.a = x;
		this.b = y;
		this.c = z;
	}
}

class sorting implements Comparator<pair> {

	@Override
	public int compare(pair o1, pair o2) {
		// TODO Auto-generated method stub
		int dif = o1.b - o2.b, str = o1.a - o2.a;
		if (dif == 0) {
			if (str < 0)
				return -1;
			else
				return 1;

		} else if (dif < 0) {
			return -1;
		} else
			return 1;
	}

}
