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

-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;
template <class T>
ostream &operator<<(ostream &s, const vector<T> &a) {
  for (size_t i = 0; i < a.size(); ++i) {
    s << a[i] << ' ';
  }
  return s;
}
template <class T>
istream &operator>>(istream &is, vector<T> &a) {
  for (int i = 0; i < a.size(); ++i) {
    is >> a[i];
  }
  return is;
}
int main() {
  string s;
  cin >> s;
  int n = s.length();
  vector<int> low(n), up(n);
  vector<pair<int, int> > ans;
  for (size_t i = 0; i < s.length(); ++i) {
    if (s[i] == '(') {
      low[i] = (i ? low[i - 1] : 0) + 1;
      up[i] = (i ? up[i - 1] : 0) + 1;
    } else if (s[i] == ')') {
      if (i == 0 || up[i - 1] == 0) {
        cout << -1 << endl;
        return 0;
      }
      low[i] = max(0, low[i - 1] - 1);
      up[i] = up[i - 1] - 1;
    } else if (s[i] == '#') {
      if (i == 0 || up[i - 1] == 0) {
        cout << -1 << endl;
        return 0;
      }
      low[i] = 0;
      up[i] = up[i - 1] - 1;
      ans.push_back(make_pair(1, i));
    }
  }
  if (low[n - 1] > 0) {
    cout << -1 << endl;
    return 0;
  }
  int cnt = 0;
  for (size_t i = n; i--;) {
    if (low[i] == 0) {
      ++cnt;
    } else {
      if (cnt && s[i + 1] == '#') {
        ans.back().first = up[ans.back().second - 1] - cnt + 1;
        break;
      }
      cnt = 0;
    }
  }
  for (size_t i = 0; i < ans.size(); ++i) {
    cout << ans[i].first << endl;
  }
  return 0;
}
