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

-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;
char a[100005];
int n;
int ans[100005][2];
int flag[100005];
int find_mn(int pos) {
  int mn = 1000000;
  for (int i = pos; i < n; i++) {
    mn = min(mn, flag[i]);
  }
  return mn;
}
int main() {
  cin >> a;
  int i, rest = 0, cnt = 0;
  n = strlen(a);
  for (i = 0; i < n; i++) {
    if (a[i] == '(')
      rest++;
    else if (a[i] == ')')
      rest--;
    else if (a[i] == '#') {
      ans[cnt][0] = 1;
      ans[cnt++][1] = i;
      rest--;
    }
    if (rest < 0) {
      cout << -1 << endl;
      return 0;
    }
    flag[i] = rest;
  }
  if (rest < 0) {
    cout << -1 << endl;
  } else {
    int mn = find_mn(ans[cnt - 1][1]);
    if (mn < rest) {
      cout << -1 << endl;
      return 0;
    } else
      ans[cnt - 1][0] += rest;
    for (i = 0; i < cnt; i++) cout << ans[i][0] << endl;
  }
  return 0;
}
