#include <bits/stdc++.h>
using namespace std;
int main() {
  int tst;
  cin >> tst;
  while (tst--) {
    int i, j, k, l, m, n;
    cin >> n;
    string s;
    cin >> s;
    set<int> ze, on;
    for (i = 0; i < n; i++) {
      if (s[i] == '1')
        on.insert(i);
      else
        ze.insert(i);
    }
    int ans[n + 10];
    memset(ans, 0, sizeof ans);
    int st = 1;
    j = 0;
    int ya = 0, kel, pt;
    st = 0;
    for (i = 0; i < n; i++) {
      if (ans[i]) continue;
      if (on.empty() || ze.empty()) break;
      st++;
      if (s[i] == '0') {
        kel = i;
        pt = 0;
        while (1) {
          if (pt == 0) {
            auto x = on.lower_bound(kel);
            ans[kel] = st;
            ze.erase(kel);
            if (x == on.end()) {
              break;
            } else {
              l = *x;
              ans[l] = st;
              on.erase(l);
              pt = 1 - pt;
              kel = l;
            }
          } else {
            auto x = ze.lower_bound(kel);
            ans[kel] = st;
            on.erase(kel);
            if (x == ze.end()) {
              break;
            } else {
              l = *x;
              ans[l] = st;
              ze.erase(l);
              pt = 1 - pt;
              kel = l;
            }
          }
        }
      } else {
        pt = 0;
        kel = i;
        while (1) {
          if (pt == 0) {
            auto x = ze.lower_bound(kel);
            ans[kel] = st;
            on.erase(kel);
            if (x == ze.end()) {
              break;
            } else {
              l = *x;
              ans[l] = st;
              ze.erase(l);
              pt = 1 - pt;
              kel = l;
            }
          } else {
            auto x = on.lower_bound(kel);
            ans[kel] = st;
            ze.erase(kel);
            if (x == on.end()) {
              break;
            } else {
              l = *x;
              ans[l] = st;
              on.erase(l);
              pt = 1 - pt;
              kel = l;
            }
          }
        }
      }
    }
    st++;
    if (on.size()) {
      for (auto x : on) ans[x] = st, st++;
    } else if (ze.size()) {
      for (auto x : ze) ans[x] = st, st++;
    }
    set<int> kar;
    for (i = 0; i < n; i++) kar.insert(ans[i]);
    cout << kar.size() << '\n';
    for (i = 0; i < n; i++) cout << ans[i] << " ";
    cout << '\n';
  }
}
