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

-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 long long INF = 1e9;
const long long N = 1e2 + 1;
const long long mod = 1e9 + 7;
const long double eps = 1E-7;
string s;
int z, w;
char x, y;
vector<int> D;
vector<int> ANS;
deque<pair<char, int>> V;
int main() {
  ios_base::sync_with_stdio(0);
  cin >> s;
  for (int i = 0; i < s.size(); i++) {
    x = s[i], y = '*';
    if (!V.empty()) y = V.back().first;
    if (x == '#')
      D.push_back(i);
    else if (y != x && y == '(')
      V.pop_back();
    else
      V.push_back({x, i});
  }
  if (V.front().first == ')') {
    cout << -1;
    return 0;
  }
  w = 1;
  for (int i = 0; i < D.size(); i++) {
    if (i != D.size() - 1 && D[i + 1] - D[i] == 1) {
      w++;
      continue;
    }
    while (!V.empty() && V.front().second <= D[i]) z++, V.pop_front();
    if (w > z) {
      cout << -1;
      return 0;
    }
    for (int i = 1; i <= w; i++) ANS.push_back(1), z--;
    w = 1;
  }
  if (!V.empty()) {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < ANS.size() - 1; i++) cout << ANS[i] << endl;
  cout << ANS.back() + z << endl;
}
