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

-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 CF282C {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		longestValidParentheses(in.nextLine());
	}
	public static void longestValidParentheses(String s) {
        char [] arr = s.toCharArray();
        Stack<Integer> stack = new Stack();
        Stack<Integer> hash = new Stack<Integer>();
        for(int i = 0 ; i < arr.length ; i++){
            if(arr[i]=='('){
                stack.push(i);
            }else if (arr[i]==')'){
            	if(!stack.isEmpty())
            		stack.pop();
            	else {
            		System.out.println(-1);
            		return;
            	}
            }else{
            	hash.push(i);
            }
        }
        int i = 0 ;
        for(int q = 0 ; q < hash.size() ; q++){
        	int j = hash.get(q);
        	int ans = 0;
        	for(; i < stack.size() ; i++){
        		if(stack.get(i)<j){
//        			System.out.print(" " + stack.get(i));
        			ans++;
        		}
        		else break;
        	}
        	if(ans == 0){System.out.println(-1);
        	return;
        	}
        	else System.out.println(ans);
        }
    }
}
