#include <bits/stdc++.h>
using namespace std;
namespace {
template <typename T>
void __f(const char*, T&&);
template <typename T1, typename... T2>
void __f(const char*, T1&&, T2&&...);
void rd_nums(long long, long long max_size = 10);
void rd_str(long long, string allowed = "abcdefghijklmnopqrstuvwxyz");
}  // namespace
int main() {
  srand(time(0));
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    vector<pair<string, bool>> vec(n);
    set<string> p;
    for (auto& i : vec) {
      cin >> i.first;
      if (p.count(i.first))
        i.second = true;
      else {
        i.second = false;
        p.insert(i.first);
      }
    }
    set<char> s;
    vector<char> all{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
    for (auto i : vec) {
      s.insert(i.first[3]);
    }
    int ans = 0;
    for (auto& i : vec) {
      if (!i.second) continue;
      ans++;
      for (auto poss : all) {
        if (s.count(poss)) continue;
        i.first[3] = poss;
        s.insert(poss);
        break;
      }
    }
    cout << ans << "\n";
    for (auto i : vec) cout << i.first << "\n";
  }
  return 0;
}
namespace {
template <typename T>
void __f(const char* variable_name, T&& value) {
  cout << variable_name << ": " << value << "\n";
}
template <typename T1, typename... T2>
void __f(const char* names, T1&& arg1, T2&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << ": " << arg1 << " |";
  __f(comma + 1, args...);
}
void rd_nums(long long size, long long max_size) {
  while (size--) cout << rand() % max_size << " ";
  cout << "\n";
}
void rd_str(long long size, string allowed) {
  while (size--) cout << allowed[rand() % allowed.length()];
  cout << "\n";
}
}  // namespace
