#include <iostream>
#define REP(i, a, n) for(int i = ((int) a); i < ((int) n); i++)
using namespace std;

int H, W, N;
char S[35][35];

bool ok(int i1, int i2, int i3, int i4) {
  bool used[35][35];
  char T[35][35];
  REP(i, 0, H) REP(j, 0, W) T[i][j] = S[i][j];
  swap(T[i1][i2], T[i3][i4]);
  REP(i, 0, H) REP(j, 0, W) {
    if(T[i][j] == '.') {
      for(int k = i - 1; k >= 0; k--) T[k + 1][j] = T[k][j];
      T[0][j] = '.';
    }
  }

  bool cont = true;
  while(cont) {
    REP(i, 0, H) REP(j, 0, W) used[i][j] = false;
    REP(i, 0, H) REP(j, 0, W) {
      if(T[i][j] == '.') continue;
      int f1 = true;
      REP(k, 1, N) if(i + k >= H || T[i + k][j] != T[i][j]) f1 = false;
      if(f1) REP(k, 0, N) used[i + k][j] = true;
      int f2 = true;
      REP(k, 1, N) if(j + k >= W || T[i][j + k] != T[i][j]) f2 = false;
      if(f2) REP(k, 0, N) used[i][j + k] = true;
    }
    cont = false;
    REP(i, 0, H) REP(j, 0, W) if(used[i][j]) T[i][j] = '.', cont = true;
    REP(i, 0, H) REP(j, 0, W) {
      if(T[i][j] == '.') {
        for(int k = i - 1; k >= 0; k--) T[k + 1][j] = T[k][j];
        T[0][j] = '.';
      }
    }
  }
  bool f = true;
  REP(i, 0, H) REP(j, 0, W) if(T[i][j] != '.' && !used[i][j]) f = false;
  return f;
}

int main(void) {
  cin >> H >> W >> N;
  REP(i, 0, H) cin >> S[i];

  bool ans = false;
  REP(i, 0, H) REP(j, 0, W) if(j + 1 < W) ans = ans || ok(i, j, i, j + 1);
  cout << (ans ? "YES" : "NO") << endl;

  return 0;
}