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;
int card[20][20][3];
bool exits[15][4];
pair<int, int> P[2];
pair<int, int> res[2];
vector<pair<int, int> > G;
char Jo[2][3];
bool flag;
int n, m;
int rank_(char *s) {
  if (s[0] >= '2' && s[0] <= '9') {
    return s[0] - '0';
  } else {
    if (s[0] == 'T') return 10;
    if (s[0] == 'J' && s[1] != '1' && s[1] != '2') return 11;
    if (s[0] == 'Q') return 12;
    if (s[0] == 'K') return 13;
    if (s[0] == 'A') return 1;
    if (s[0] == 'J') return 14;
  }
}
char rerank(int k) {
  if (k >= 2 && k <= 9) return k + '0';
  if (k == 1) return 'A';
  if (k == 10) return 'T';
  if (k == 11) return 'J';
  if (k == 12) return 'Q';
  if (k == 13) return 'K';
}
int suit(char *s) {
  if (s[1] == 'C') return 0;
  if (s[1] == 'D') return 1;
  if (s[1] == 'H') return 2;
  if (s[1] == 'S') return 3;
  if (s[1] == '1') return 0;
  if (s[1] == '2') return 1;
}
char resuit(int k) {
  if (k == 0) return 'C';
  if (k == 1) return 'D';
  if (k == 2) return 'H';
  if (k == 3) return 'S';
}
bool judge(int x1, int y1) {
  bool Ju[15];
  memset(Ju, false, sizeof(Ju));
  for (int i = x1; i < x1 + 3; i++)
    for (int j = y1; j < y1 + 3; j++) {
      if (Ju[card[i][j][0]]) {
        return false;
      } else {
        Ju[card[i][j][0]] = true;
      }
    }
  return true;
}
void solve() {
  for (int i = 1; i + 2 <= n; i++) {
    for (int j = 1; j + 2 <= m; j++) {
      for (int k = 1; k + 2 <= n; k++) {
        for (int e = j + 3; e + 2 <= m; e++) {
          if (judge(i, j) && judge(k, e)) {
            res[0].first = i, res[0].second = j;
            res[1].first = k, res[1].second = e;
            flag = true;
            break;
          }
        }
        if (flag) break;
      }
      if (flag) break;
    }
    if (flag) break;
  }
  for (int i = 1; i + 2 <= n; i++) {
    for (int j = 1; j + 2 <= m; j++) {
      for (int k = j + 3; k + 2 <= n; k++) {
        for (int e = j; e + 2 <= m; e++) {
          if (judge(i, j) && judge(k, e)) {
            res[0].first = i, res[0].second = j;
            res[1].first = k, res[1].second = e;
            flag = true;
            break;
          }
        }
        if (flag) break;
      }
      if (flag) break;
    }
    if (flag) break;
  }
}
int main() {
  while (~scanf("%d%d", &n, &m)) {
    G.clear();
    memset(exits, false, sizeof(exits));
    int Joker = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        char op[3];
        scanf("%s", op);
        int r = rank_(op);
        int s = suit(op);
        card[i][j][0] = r;
        card[i][j][1] = s;
        exits[r][s] = true;
        if (r == 14) {
          P[Joker].first = i;
          P[Joker].second = j;
          Jo[Joker][0] = op[0];
          Jo[Joker][1] = op[1];
          Jo[Joker][3] = '\0';
          Joker++;
        }
      }
    }
    for (int i = 1; i <= 13; i++) {
      for (int j = 0; j <= 3; j++) {
        if (!exits[i][j]) {
          G.push_back(make_pair(i, j));
        }
      }
    }
    flag = false;
    if (Joker == 1) {
      int len = G.size();
      for (int i = 0; i < len; i++) {
        int inx = P[0].first;
        int iny = P[0].second;
        card[inx][iny][0] = G[i].first;
        card[inx][iny][1] = G[i].second;
        solve();
        if (flag) break;
      }
    } else if (Joker == 2) {
      int len = G.size();
      for (int i = 0; i < len; i++) {
        int inx = P[0].first;
        int iny = P[0].second;
        card[inx][iny][0] = G[i].first;
        card[inx][iny][1] = G[i].second;
        for (int j = 0; j < len; j++) {
          if (j != i) {
            inx = P[1].first;
            iny = P[1].second;
            card[inx][iny][0] = G[j].first;
            card[inx][iny][1] = G[j].second;
            solve();
          }
          if (flag) break;
        }
        if (flag) break;
      }
    } else {
      solve();
    }
    if (flag) {
      if (!Joker) {
        printf("Solution exists.\n");
        printf("There are no jokers.\n");
        printf("Put the first square to (%d, %d).\n", res[0].first,
               res[0].second);
        printf("Put the second square to (%d, %d).\n", res[1].first,
               res[1].second);
      } else if (Joker == 1) {
        int jx = P[0].first;
        int jy = P[0].second;
        char rank_char = rerank(card[jx][jy][0]);
        char suit_char = resuit(card[jx][jy][1]);
        printf("Solution exists.\n");
        printf("Replace %s with %c%c.\n", Jo[0], rank_char, suit_char);
        printf("Put the first square to (%d, %d).\n", res[0].first,
               res[0].second);
        printf("Put the second square to (%d, %d).\n", res[1].first,
               res[1].second);
      } else if (Joker == 2) {
        printf("Solution exists.\n");
        int jx = P[0].first;
        int jy = P[0].second;
        int jx1 = P[1].first;
        int jy1 = P[1].second;
        char rank_char1 = rerank(card[jx][jy][0]);
        char suit_char1 = resuit(card[jx][jy][1]);
        char rank_char2 = rerank(card[jx1][jy1][0]);
        char suit_char2 = resuit(card[jx1][jy1][1]);
        printf("Replace %s with %c%c and %s with %c%c.\n", Jo[0], rank_char1,
               suit_char1, Jo[1], rank_char2, suit_char2);
        printf("Put the first square to (%d, %d).\n", res[0].first,
               res[0].second);
        printf("Put the second square to (%d, %d).\n", res[1].first,
               res[1].second);
      }
    } else {
      printf("No solution.\n");
    }
  }
  return 0;
}
