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

-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 int MOD = 1000000007;
const double EXP = 2.7182818284590452;
const double Pi = 3.1415926358979323;
bool prime(long long n) {
  if (n == 1) return false;
  for (long long i = 2; i <= sqrt(n); i++)
    if (n % i == 0) return false;
  return true;
}
long long gcd(long long a, long long b) {
  while (a * b) {
    if (a > b)
      a %= b;
    else
      b %= a;
  }
  return a + b;
}
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
long long exgcd(long long a, long long b, long long& x, long long& y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  long long x1, y1;
  long long d = exgcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
long long poww(long long val, long long p, long long mod) {
  if (p == 1) return val % mod;
  if (p == 0) return 1;
  long long res;
  if (p & 1) {
    res = (val % mod) * poww(val, p - 1, mod);
  } else {
    long long t = poww(val, p / 2, mod);
    res = t * t;
  }
  return res % mod;
}
string str, str1;
int arr[100005], res, t, num = 0;
bool isminus = false;
int main(void) {
  cin >> str1;
  isminus = false;
  for (int i = (0); i < (str1.length()); ++i) {
    if (str1[i] == '#') {
      isminus = true;
      continue;
    }
    if (isminus) {
      str.push_back('#');
      isminus = false;
    }
    str.push_back(str1[i]);
  }
  if (isminus) {
    str.push_back('#');
    isminus = false;
  }
  res = 1;
  if (str[0] == ')' || str[0] == '#' || str[str.length() - 1] == '(') {
    res = -1;
  } else {
    for (int i = (0); i < (str.length()); ++i) {
      if (str[i] == '(') arr[i + 1] = (arr[i] > 0) ? (arr[i] + 1) : (1);
      if (str[i] == ')') arr[i + 1] = arr[i] - 1;
      if (str[i] == '#') {
        arr[i + 1] = 0;
        ++num;
      }
    }
    t = 0;
    for (int i = str.length(); i > 0; --i) {
      if (arr[i] < 0 && !isminus) {
        t -= arr[i];
        isminus = true;
      }
      if (arr[i] >= 0) isminus = false;
      if (str[i - 1] == '#') {
        if (arr[i - 1] <= 0) {
          res = -1;
          break;
        }
        if (t >= arr[i - 1]) {
          t -= arr[i - 1] - 1;
          arr[i - 1] = 1;
        } else {
          arr[i - 1] -= t;
          t = 0;
        }
      }
    }
    if (t > num) res = -1;
  }
  if (res == -1) {
    cout << res;
  } else {
    for (int i = (0); i < (str.length()); ++i) {
      if (str[i] == '#') {
        printf("%d\n", arr[i]);
      }
    }
  }
  return 0;
}
