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

-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 s[int(1e5 + 10)];
int n;
stack<int> sta;
bool b[int(1e5 + 10)];
int val[int(1e5 + 10)], m, ans[int(1e5 + 10)], cnt = 0;
int main() {
  gets(s + 1);
  n = strlen(s + 1);
  int i = 1;
  while (i <= n) {
    if (s[i] == '(') {
      b[i] = 1;
      sta.push(i);
      i++;
    } else if (s[i] == ')') {
      if (sta.empty()) {
        cout << "-1";
        return 0;
      }
      b[sta.top()] = 0;
      sta.pop();
      i++;
    } else
      i++;
  }
  int sum = 0;
  int last, lastx;
  for (int i = 1; i <= n; i++) {
    if (b[i]) {
      sum++;
      last = i;
    }
    if (s[i] == '#') {
      cnt++;
      lastx = i;
    }
    if (sum < cnt) {
      cout << "-1";
      return 0;
    }
  }
  if (lastx < last) {
    cout << "-1";
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    if (s[i] == '#') {
      ans[++m] = 1;
      sum--;
    }
  }
  ans[m] += sum;
  for (int i = 1; i <= m; i++) {
    printf("%d\n", ans[i]);
  }
}
