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

-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.util.Scanner;
import java.util.Stack;


public class C_495 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String s = scanner.next();
		boolean ok = false;
		Stack<Character> doors = new Stack<>();
		boolean hash = false;
		int hashCount=0;
		if(s.startsWith("#") || s.startsWith(")") || s.endsWith("(") ) {
			System.out.println(-1);
			scanner.close();
			return;
		}
		for(char c : s.toCharArray()) {
			hashCount += (c=='#')?1 :0;
				doors.push(c);
			}
			
		
		int count =0;
		while (!doors.isEmpty()) {			
			char ci = doors.pop();
			//()((#((#(#()
			switch (ci) {
			case ')' : count--;
			break;
			case '#' : 
				if(hash) {
					count--;
					System.out.println(1);
				}
				hashCount--;
				hash=true;
				break;
			case '(' :
				
				count++;
				if(hashCount ==0) {					
					while (!doors.isEmpty()) {
						char nc = doors.pop();
						if(nc == ')')
							count--;
						else if(nc == '(')
							count++;
					}
				}
				else if(hash && count>0) {
					System.out.println(count);
					count=0;
					ok=true;
					hash=false;
				}
				
			}
		}
		
		if(!ok) {
			if(count>0)
				System.out.println(count);
			else
				System.out.println(-1);
		}
		else if(count>0)
			System.out.println(count);
		
	
		
		scanner.close();
	}

}
