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

-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 class a1 {
	public static void main(String[] args) throws FileNotFoundException {
		Scanner in = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);
		String s = in.next();
		int count = 0;
		int count1 = 0;
		int n = s.length();
		int b[] = new int[n];
		int last = -1;
		ArrayList<Integer> any = new ArrayList();
		for (int i = 0; i < n; i++) {
			if (s.charAt(i) == '(') {
				count++;
			} else {
				if (s.charAt(i) == '#') {
					count1++;
					any.add(i);
					last = i;
				} else {
					count--;
				}
			}
			b[i] = count;
		}
		if ((count1 > count) || ((last == -1) && (count != 0)) || (count < 0)) {
			out.print("-1");
		} else {
			boolean flag = true;
			if (any.size() != 0) {
				for (int i = 0; i < any.get(0); i++) {
					if (b[i] < 0) {
						flag = false;
					}
				}
				int need = count;
				int add = 0;
				int ans[] = new int[any.size()];
				int balance_before = 0;
				for (int j = 0; j < any.get(0); j++) {
					if (s.charAt(j) == '(') {
						balance_before++;
					} else {
						balance_before--;
					}
					if (balance_before < 0) {
						flag = false;
					}
				}
				for (int i = 0; i < any.size(); i++) {
					if (i != (any.size() - 1)) {
						int min1 = b[any.get(i)];
						for (int j = any.get(i) + 1; j < any.get(i + 1); j++) {
							min1 = Math.min(min1, b[j] + add);
						}
						if (min1 < 0) {
							ans[i] = min1;
							if (ans[i] == 0){
								ans[i]++;
							}
						} else {
							ans[i] = 1;
						}
						add += ans[i];
						need -= ans[i];
					} else {
						if (need > 0) {
							ans[any.size() - 1] = need;
						} else {
							flag = false;
							int balance_after = 0;
							for (int j = any.get(any.size() - 1); j < n; j++) {
								if (s.charAt(j) == '(') {
									balance_after++;
								} else {
									balance_after--;
								}
								if (balance_after < 0) {
									flag = false;
								}
							}
						}
					}
				}
				if (!flag) {
					out.print(-1);
				} else {
					for (int i = 0; i < any.size(); i++) {
						out.println(ans[i]);
					}
				}
			}
		}
		out.close();
	}
}
