#include <bits/stdc++.h>
using namespace std;
string s, s1, s2, s3;
int t, i, z, p1, p2, p3, kol, kol1, kol2, kol3;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  s1 = "qwertyuioplkjhgfdsazxcvbnm";
  s2 = "QWERTYUIOPLKJHGFDSAZXCVBNM";
  s3 = "1234567890";
  cin >> t;
  for (z = 1; z <= t; z++) {
    cin >> s;
    p1 = 0;
    p2 = 0;
    p3 = 0;
    kol1 = 0;
    kol2 = 0;
    kol3 = 0;
    kol = 0;
    for (i = 0; i < s.size(); i++)
      if (s1.find(s[i]) != string::npos) {
        p1 = i;
        kol1++;
      }
    for (i = 0; i < s.size(); i++)
      if (s2.find(s[i]) != string::npos) {
        p2 = i;
        kol2++;
      }
    for (i = 0; i < s.size(); i++)
      if (s3.find(s[i]) != string::npos) {
        p3 = i;
        kol3++;
      }
    if (kol1 != 0) kol++;
    if (kol2 != 0) kol++;
    if (kol3 != 0) kol++;
    if (kol == 3) cout << s << "\n";
    if (kol == 1) {
      if (kol1 != 0) {
        for (i = 0; i < s.size() - 1; i++)
          if ((s1.find(s[i]) != string::npos) &&
              (s1.find(s[i + 1]) != string::npos)) {
            s[i] = 'A';
            s[i + 1] = '7';
            break;
          }
      }
      if (kol2 != 0) {
        for (i = 0; i < s.size() - 1; i++)
          if ((s2.find(s[i]) != string::npos) &&
              (s2.find(s[i + 1]) != string::npos)) {
            s[i] = 'a';
            s[i + 1] = '7';
            break;
          }
      }
      if (kol3 != 0) {
        for (i = 0; i < s.size() - 1; i++)
          if ((s3.find(s[i]) != string::npos) &&
              (s3.find(s[i + 1]) != string::npos)) {
            s[i] = 'a';
            s[i + 1] = 'A';
            break;
          }
      }
      cout << s << "\n";
    }
    if (kol == 2) {
      if (kol1 == 0) {
        for (i = 0; i < s.size(); i++)
          if (((s2.find(s[i]) != string::npos) && (kol2 >= 2)) ||
              ((s3.find(s[i]) != string::npos) && (kol3 >= 2))) {
            s[i] = 'a';
            break;
          }
      }
      if (kol2 == 0) {
        for (i = 0; i < s.size(); i++)
          if (((s1.find(s[i]) != string::npos) && (kol1 >= 2)) ||
              ((s3.find(s[i]) != string::npos) && (kol3 >= 2))) {
            s[i] = 'A';
            break;
          }
      }
      if (kol3 == 0) {
        for (i = 0; i < s.size(); i++)
          if (((s1.find(s[i]) != string::npos) && (kol1 >= 2)) ||
              ((s2.find(s[i]) != string::npos) && (kol2 >= 2))) {
            s[i] = '7';
            break;
          }
      }
      cout << s << "\n";
    }
  }
  return 0;
}
