7 7
6C 8C KH 8S 2H 7S JH
3H QC QD TS 4C QH J2
7C 6S 6D 8D 7D 4S JS
3S 3D 9S 3C J1 2D 7H
AH KD AS 9C 2S 5D QS
2C JD 8H 9D 4D 5H 5C
JC KC 6H TH TD KS TC
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D J2 TD KC
2H 3H 4H J1 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 3 17
3H AS 2S 9C JH JD JC QH 2C QD JS TD 5C QS 4D 5S 8D
6C QC TC KS 6D 7D AH 7C 4C 5H KD 7S 3D 4H 8S 3S KH
J2 2H 9H AD 8C 8H 4S 9D TS 6S 7H 6H 9S AC 2D 3C J1
 7 7
2C J2 5D 3C AH 6S 8H
TD 7S QD TC AD 5C 3H
3D 4H 6C 2S AC AS 7H
JS 9H JD 6D 7C 9S KS
6H 9C QC 8S 9D 4D QS
4S 5H 5S 8D JH 8C 2D
KC 4C TS TH 3S 7D QH
 7 7
QS 5C 2H JC 6C TD 2S
JD 9D 9S 7S 3H 9H 4D
AD 5H AS JH KC 5D QH
3S 8S 8H 4H AC 6D TC
2C KH TH 3C 7C JS 8C
4C 6S QC 6H 3D 7H KD
7D AH 8D TS QD 2D 4S
 6 6
J1 2D 3D 3C QH KH
4D 5D 6D AH TS QS
7D 8D JD KS AS 9S
TD 5C QD 9H TC QC
TH AD 9C KC AC 2C
KD 4C 9D 6C 7C 8C
 7 3
3H J2 4H
5H 6H 7H
8H 9H TH
2S 3S TS
2D 3D 4D
5D 6D 7D
AD KD QD
 3 3
9C TH JS
AH J1 AD
3D 4D 9D
 3 6
2H 3H 4H 5H 2S 3S
6H 7H 8H 9H 4S 5S
TH JH QH KH 6S 7S
 17 3
TH QD TC
AD 6C TS
KS 7H KC
9H 3S 2S
4D 3D 5H
4C 4S 9S
QH 2C KH
6H 8H JH
J1 5C KD
9D J2 JS
7D 9C JD
TD QS 2D
AS 3C QC
5D 8D 8S
3H 7C 8C
5S JC 2H
4H 7S 6D
 5 5
KH J2 JH 8C 5H
7S KC AC 2S KD
7H TS 6D 5C 8H
QD 2H JC QH 3S
6H TD 4H J1 8S
 3 3
4C 2C 3H
8D 8C 5S
AC 7H QH
 3 14
KH 8H 2H 2C 5C AH 2D 5D 8D 2S 5S KC 8S 5H
QH 9H 3H 3C 6C AC 3D 6D AD 3S 6S 9S JS 6H
JH TH 4H 4C 7C TC 4D 7D AS 4S 7S KS QS 7H
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C J2 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H 4H 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H 4H 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 13 3
TH 9H 8H
7H 6H 5H
JH 3H 4H
2C 3C 4C
AH 6C 7C
8C 9C AS
2D 3D 4D
5D 6D AD
AC 9D KD
2S 3S 4S
KS 6S 7S
8S 9S 2H
JS QS KH
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
8C 9C TC JC 7D 6H 9H J1
KC QC AC AS 7S JS TH QH
6C 7C J2 JH 6S 8H KH AH
 14 3
8H 9H TH
JH QH KH
2H 3H 4H
2C 3C 4C
5C 6C 7C
AC AD TC
2D 3D 4D
5D 6D 7D
8D AH AS
2S 3S 4S
5S 6S 7S
KC 9S KD
JC QC 8S
5H 6H 7H
 9 3
8D AH TD
5D 6D 7D
AS 3D 4D
8C AD TC
5C 6C KH
2C KS 4C
2H 3H 4H
5H 6H 7H
8H 9H TH
 14 3
8H 9H TH
5H 6H 7H
2H 3H 4H
2C 3C 4C
5C AH 7C
8C 9C AC
2D 3D 4D
5D AS 7D
AD KH TD
2S 3S 4S
5S 6S KC
8S KS TS
9S 7S JS
KD QS 6C
 6 3
7C 8C 9C
TC 2C 3C
QC 5C J1
2D 3D 4D
5D J2 6D
7D AD KS
 9 3
2H 4S AC
9S 2D 2S
AD TD 7S
J1 7D TS
3H QH 6H
JH 8S 5C
TC 6C 4H
9D 5D 9H
3S J2 QD
 6 6
3D 7C 8H 2S 5H 6D
QS KH TS 4D TH AH
4H J2 JC 6S QC JS
QH 9C AS 9H AC 4C
2H 3S KC J1 AD 9D
JD 8C 5S 3H JH 7H
 4 4
7S JD 5C 3S
9H 5H AS J2
KD JS 6D 9S
2S 8D JH J1
 6 3
J2 6D 2D
5D J1 7D
8D 9D TD
5H 6C 7C
8H TS QS
KS AS 2H
 6 7
2H 2D 3H 3D J2 2S 3S
4H 4D 5H 5D 4S 5S 6S
6H 6D TH TD 7S 8S 9S
JH JD QH QD AC KC QC
AH AD TS JS JC TC 9C
KH KD QS KS 8C 7C J1
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
6H 9H J2 7D JC 8C 9C TC
JS TH QH 7S AS KC QC AC
8H KH AH 6S JH 6C 7C J1
 3 3
AH 5H J2
4H 8H KC
4C 9C TH
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
6H 9H J1 7D JC 8C 9C TC
JS TH QH 7S AS KC QC AC
8H KH AH 6S JH 6C 7C J2
 4 13
8D 4S QH AS 3D 8C 6H AD 7D 9S 8S KH 7S
KS 2D 2C JH AC 8H 7H 3C J2 9C TS J1 QD
6D 3H QC 4D JD TH JC TD 4H 2H TC 5H KC
5S JS KD 5D AH 5C 4C 3S 6C 9D QS 6S 2S
 3 3
AH 9D 5D
JH 3S QH
J2 2S J1
 3 3
J1 7H 8H
AH QH 9H
J2 KH 2H
 6 7
J1 2H 3H 2D TS TD TC
4H 5H 6H JH JS JD JC
7H 8H 9H KH KS KD KC
7C 8C 9C AH AS AD TH
4C 5C 6C 3S 4S 5S 6S
J2 2C 3C QH QS QD QC
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
8C 9C TC JC 7D 6H 9H J2
KC QC AC AS 7S JS TH QH
6C 7C J1 JH 6S 8H KH AH
 6 7
J1 2H 3H JH JS JC JD
4H 5H 6H 6D TH TS TD
7H 8H 9H 9D QS QC QD
7C 8C 9C KH KS KC KD
4C 5C 6C AH AS AC AD
2C 3C TC QH 6S 7S 8S
 7 7
J2 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H 4H 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH J1
 7 7
4C 5S 6C 3H QD 8D 5C
7C 4D KC 2C 4S TH 2D
5H QS 9D 6S 2H 8H AC
J1 JC 3D TD J2 8C 7H
3C 5D 9S JD 8S 6D 9C
3S 7D AS KD KS KH AH
QH AD QC TC 2S JH TS
 5 5
2H 2S 2D 3D 4D
3H 3S 5D 6D 7D
2C 3C J2 8D 9D
4C 5C 6C 9H 9S
7C 8C 9C 8H 8S
 3 9
TH 2C AC 5H AH 5D 2D 3S TC
JD QC J1 2H 6C 9D 5S 2S 6S
8D KD J2 3D AS KC TS JC 5C
 13 4
AH TC J2 4D
QD 4S 3C KS
6S 8S 5S 9H
2D JS 7H JD
KD QS JC 6C
AD 3S 8C 7D
AS 2S 9C KC
3D J1 9D 8D
4H 7C TH 4C
9S QC QH 2C
2H 6H KH TD
3H 8H 5C TS
AC 5D 5H JH
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H J1 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 7 7
3C 7S 2C AS 4S AC TS
KC 5H 4C 3S JC QS 9H
J1 JS 6H 3D KH 8D 2S
7H 2D 2H 3H 5S 5D 9C
6S TD KD 4H 7C QC 8C
9D TH 9S 5C QH AD 4D
8S JD 8H JH AH QD 6D
 6 7
2H 2D 3H 3D J1 2S 3S
4H 4D 5H 5D 4S 5S 6S
6H 6D TH TD 7S 8S 9S
JH JD QH QD AC KC QC
AH AD TS JS JC TC 9C
KH KD QS KS 8C 7C J2
 6 7
J2 2H 3H JH JS JC JD
4H 5H 6H 6D TH TS TD
7H 8H 9H 9D QS QC QD
7C 8C 9C KH KS KC KD
4C 5C 6C AH AS AC AD
2C 3C TC QH 6S 7S 8S

No solution.
 Solution exists.
Replace J1 with 2S and J2 with 9D.
Put the first square to (1, 1).
Put the second square to (1, 4).
 Solution exists.
Replace J1 with 5D and J2 with TH.
Put the first square to (1, 9).
Put the second square to (1, 12).
 No solution.
 Solution exists.
There are no jokers.
Put the first square to (1, 5).
Put the second square to (5, 1).
 No solution.
 Solution exists.
Replace J2 with 2C.
Put the first square to (1, 1).
Put the second square to (5, 1).
 No solution.
 No solution.
 No solution.
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J2 with 7C.
Put the first square to (1, 1).
Put the second square to (1, 4).
 Solution exists.
There are no jokers.
Put the first square to (1, 1).
Put the second square to (1, 4).
 No solution.
 Solution exists.
Replace J1 with 7H and J2 with JD.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J1 with 4C and J2 with 8D.
Put the first square to (1, 1).
Put the second square to (4, 1).
 No solution.
 Solution exists.
Replace J1 with 2C and J2 with 2D.
Put the first square to (1, 1).
Put the second square to (4, 1).
 No solution.
 Solution exists.
Replace J1 with 3C and J2 with 4C.
Put the first square to (1, 1).
Put the second square to (4, 1).
 Solution exists.
Replace J1 with 2C and J2 with AS.
Put the first square to (1, 5).
Put the second square to (4, 5).
 Solution exists.
Replace J1 with JD and J2 with 7H.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 Solution exists.
Replace J1 with 7H and J2 with JD.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J1 with JD and J2 with 7H.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 Solution exists.
Replace J1 with 2C and J2 with JS.
Put the first square to (1, 1).
Put the second square to (1, 4).
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J1 with 6D and J2 with 7S.
Put the first square to (1, 1).
Put the second square to (5, 2).
 Solution exists.
Replace J1 with 4H.
Put the first square to (1, 1).
Put the second square to (1, 4).
 Solution exists.
Replace J1 with 6C.
Put the first square to (1, 5).
Put the second square to (5, 3).
 Solution exists.
Replace J1 with AS and J2 with 2C.
Put the first square to (1, 5).
Put the second square to (4, 5).
 No solution.

#include <bits/stdc++.h>
using namespace std;
template <class T1>
void deb(T1 e1) {
  cout << e1 << endl;
}
template <class T1, class T2>
void deb(T1 e1, T2 e2) {
  cout << e1 << " " << e2 << endl;
}
template <class T1, class T2, class T3>
void deb(T1 e1, T2 e2, T3 e3) {
  cout << e1 << " " << e2 << " " << e3 << endl;
}
template <class T1, class T2, class T3, class T4>
void deb(T1 e1, T2 e2, T3 e3, T4 e4) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << endl;
}
template <class T1, class T2, class T3, class T4, class T5>
void deb(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << " " << e5 << endl;
}
template <class T1, class T2, class T3, class T4, class T5, class T6>
void deb(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5, T6 e6) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << " " << e5 << " " << e6
       << endl;
}
int rnk[50 + 10][50 + 10], suit[50 + 10][50 + 10], jr1, js1, jr2, js2, jcnt,
    row, col, joke[10];
vector<int> used[50 + 10];
void init() {
  for (int i = 0; i < 50 + 10; i++) used[i].clear();
  jcnt = 0;
  memset((rnk), -1, sizeof(rnk));
  memset((suit), -1, sizeof(suit));
  jr1 = jr2 = -1;
  js1 = js2 = -1;
  joke[1] = joke[2] = 0;
}
int rnkvis[50 + 10], suitvis[50 + 10][5];
int checkAvailable(int r) {
  bool vis[5];
  for (int i = 0; i < used[r].size(); i++) vis[used[r][i]] = true;
  for (int i = 1; i <= 4; i++) {
    if (vis[i] == false && suitvis[r][i] == 0) return i;
  }
  return -1;
}
bool check(int u, int v) {
  if (row - u + 1 < 3) return false;
  if (col - v + 1 < 3) return false;
  memset((rnkvis), 0, sizeof(rnkvis));
  memset((suitvis), 0, sizeof(suitvis));
  int jx1, jy1, jx2, jy2;
  jx1 = jx2 = -1;
  jy1 = jy2 = -1;
  bool ret = false;
  for (int i = u; i < u + 3; i++) {
    for (int j = v; j < v + 3; j++) {
      if (rnk[i][j] == -1) {
        if (suit[i][j] == 1) {
          jx1 = i;
          jy1 = j;
        } else {
          jx2 = i;
          jy2 = j;
        }
      } else {
        int r = rnk[i][j];
        int s = suit[i][j];
        if (rnkvis[r]) return false;
        rnkvis[r] = 1;
      }
    }
  }
  if (jx1 != -1) {
    for (int i = 1; i <= 13; i++) {
      int c = checkAvailable(i);
      if (!rnkvis[i] && c != -1) {
        jr1 = i;
        js1 = c;
        rnkvis[jr1] = 1;
        suitvis[jr1][js1] = 1;
        break;
      }
    }
    if (jr1 == -1) return false;
  }
  if (jx2 != -1) {
    for (int i = 1; i <= 13; i++) {
      int c = checkAvailable(i);
      if (!rnkvis[i] && c != -1) {
        jr2 = i;
        js2 = c;
        rnkvis[jr2] = 1;
        suitvis[jr2][js2] = 1;
        break;
      }
    }
    if (jr2 == -1) return false;
  }
  return true;
}
void chooose(int &jr, int &js) {
  for (int i = 1; i <= 13; i++) {
    int c = checkAvailable(i);
    if (c != -1) {
      jr = i;
      js = c;
      rnkvis[jr] = 1;
      suitvis[jr][js] = 1;
      break;
    }
  }
}
int main() {
  int t, kase = 0, i, j, k, l;
  char rr, ss;
  while (scanf("%d %d", &row, &col) == 2) {
    init();
    for (i = 1; i <= row; i++) {
      for (j = 1; j <= col; j++) {
        string str;
        cin >> str;
        char rr = str[0];
        char ss = str[1];
        if (ss == 'C')
          suit[i][j] = 1;
        else if (ss == 'D')
          suit[i][j] = 2;
        else if (ss == 'H')
          suit[i][j] = 3;
        else if (ss == 'S')
          suit[i][j] = 4;
        else {
          jcnt++;
          joke[ss - '0'] = 1;
        }
        if (rr == 'A')
          rnk[i][j] = 1;
        else if (rr >= '2' && rr <= '9')
          rnk[i][j] = rr - '0';
        else if (rr == 'T')
          rnk[i][j] = 10;
        else if (rr == 'J' && suit[i][j] != -1)
          rnk[i][j] = 11;
        else if (rr == 'Q')
          rnk[i][j] = 12;
        else if (rr == 'K')
          rnk[i][j] = 13;
        if (rnk[i][j] != -1) {
          used[rnk[i][j]].push_back(suit[i][j]);
        } else {
          suit[i][j] = ss - '0';
        }
      }
    }
    bool found = false;
    int r1, c1, r2, c2;
    for (i = 1; i <= row; i++) {
      if (found) break;
      for (j = 1; j <= col; j++) {
        if (found) break;
        jr1 = jr2 = -1;
        js1 = js2 = -1;
        bool ok = check(i, j);
        if (ok == true) {
          r1 = i;
          c1 = j;
          for (k = 1; k <= row; k++) {
            if (found) break;
            for (l = 1; l <= col; l++) {
              if (found) break;
              if ((k - i >= 0 && k - i < 3) && (l - j >= 0 && l - j < 3))
                continue;
              bool ok2 = check(k, l);
              if (ok2) {
                found = true;
                r2 = k;
                c2 = l;
              }
            }
          }
        }
      }
    }
    if (!found)
      printf("No solution.\n");
    else {
      printf("Solution exists.\n");
      if (jcnt == 0)
        printf("There are no jokers.\n");
      else {
        if (joke[1] == 1) {
          if (jr1 == -1) chooose(jr1, js1);
          char rc, second;
          if (jr1 >= 2 && jr1 <= 9)
            rc = '0' + jr1;
          else if (jr1 == 1)
            rc = 'A';
          else if (jr1 == 10)
            rc = 'T';
          else if (jr1 == 11)
            rc = 'J';
          else if (jr1 == 12)
            rc = 'Q';
          else if (jr1 == 13)
            rc = 'K';
          if (js1 == 1)
            second = 'C';
          else if (js1 == 2)
            second = 'D';
          else if (js1 == 3)
            second = 'H';
          else if (js1 == 4)
            second = 'S';
          printf("Replace J1 with %c%c.\n", rc, second);
        }
        if (joke[2] == 1) {
          if (jr2 == -1) chooose(jr2, js2);
          char rc, second;
          if (jr2 >= 2 && jr2 <= 9) {
            rc = '0' + jr2;
          } else if (jr2 == 1)
            rc = 'A';
          else if (jr2 == 10)
            rc = 'T';
          else if (jr2 == 11)
            rc = 'J';
          else if (jr2 == 12)
            rc = 'Q';
          else if (jr2 == 13)
            rc = 'K';
          if (js2 == 1)
            second = 'C';
          else if (js2 == 2)
            second = 'D';
          else if (js2 == 3)
            second = 'H';
          else if (js2 == 4)
            second = 'S';
          printf("Replace J2 with %c%c.\n", rc, second);
        }
      }
      printf("Put the first square to (%d, %d).\n", r1, c1);
      printf("Put the second square to (%d, %d).\n", r2, c2);
    }
  }
  return 0;
}
