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

-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

#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000001;
const double EPS = 10e-9;
int main() {
  char tab[100001];
  int a, b, opened = 0, opened_2 = 0, possible = 1, possible_2 = 1,
            amount_hashes = 0, amount_hashes_2 = 0;
  scanf("%s", tab);
  for (int i = 0; i < strlen(tab); i++)
    if (tab[i] == '#') {
      amount_hashes++;
      possible = opened > 0;
      opened--;
    } else if (tab[i] == ')') {
      possible = opened > 0;
      opened--;
    } else {
      opened++;
    }
  for (int i = strlen(tab) - 1; i >= 0; i--)
    if (tab[i] == '#') {
      break;
    } else if (tab[i] == '(') {
      possible_2 = opened_2 > 0;
      opened_2--;
    } else {
      opened_2++;
    }
  if ((!possible) || (!possible_2))
    printf("-1\n");
  else {
    for (int i = 0; i < amount_hashes - 1; i++) printf("1\n");
    printf("%d\n", opened + 1);
  }
  return 0;
}
