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

-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;
struct Dbg {
  template <typename T>
  Dbg& operator,(const T& v) {
    cerr << v << ", ";
    return *this;
  }
} Dbg;
template <typename T>
ostream& operator<<(ostream& _o_, const vector<T>& _v_) {
  if (!_v_.empty()) {
    _o_ << '[';
    copy(_v_.begin(), _v_.end(), ostream_iterator<T>(_o_, ", "));
    _o_ << "\b\b]";
  }
  return _o_;
}
template <class C>
void mini(C& _a, C _b) {
  _a = min(_a, _b);
}
template <class C>
void maxi(C& _a, C _b) {
  _a = max(_a, _b);
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  string s;
  cin >> s;
  int n = s.size();
  int opening = 0, closing = 0, cnt = 0;
  for (int i = 0; i < n; i++) {
    opening += (s[i] == '(');
    closing += (s[i] == ')');
    if (closing > opening) {
      cout << -1;
      return 0;
    }
    cnt += (s[i] == '#');
  }
  if (cnt > opening - closing) {
    cout << -1;
    return 0;
  }
  int k = 0;
  vector<int> ans;
  for (int i = 0; i < n; i++) {
    k += (s[i] == '(');
    k -= (s[i] == ')');
    if (s[i] == '#') {
      if (cnt > 1) {
        cnt--;
        k--;
        closing++;
        ans.push_back(1);
      } else {
        if (opening - closing - 1 < 0) {
          cout << -1;
          return 0;
        }
        k -= opening - closing;
        ans.push_back(opening - closing);
      }
    }
    if (k < 0) {
      cout << -1;
      return 0;
    }
  }
  for (int x : ans) {
    cout << x << '\n';
  }
  return 0;
}
