#include<iostream>
#include<vector>

using namespace std;
int h, w, n;
char c[30][30];

bool hoge(int _i, int l, int r){
   char d[h][w];
   for(int i=0; i<h; i++){
      for(int j=0; j<w; j++){
         d[i][j]=c[i][j];
      }
   }
   swap(d[_i][l], d[_i][r]);
   while(1){
      //FallDown
      for(int j=0; j<w; j++){
         for(int i=0; i+1<h; i++){
            if(d[i+1][j]=='.')for(int k=i+1; k>0; k--){
               swap(d[k-1][j], d[k][j]);
            }
         }
      }
      //Finished?
      bool fin=true;
      for(int j=0; j<w; j++){
         fin&=(d[h-1][j]=='.');
      }
      if(fin) return true;
      //Find_Chain
      bool D[h][w];
      for(int i=0; i<h; i++){
         for(int j=0; j<w; j++){
            D[i][j]=0;
         }
      }
      for(int i=0; i<h; i++){
         for(int j=0; j+1<w; j++){
            int m=1;
            for(int k=j+1; k<w; k++){
               if(d[i][j]==d[i][k]&&d[i][j]!='.') m++;
               else break;
            }
            if(m>=n)for(int k=j; k<j+m; k++){
               D[i][k]=1;
            }
         }
      }
      for(int j=0; j<w; j++){
         for(int i=0; i+1<h; i++){
            int m=1;
            for(int k=i+1; k<h; k++){
               if(d[i][j]==d[k][j]&&d[i][j]!='.') m++;
               else break;
            }
            if(m>=n)for(int k=i; k<i+m; k++){
               D[k][j]=1;
            }
         }
      }
      //Found?
      bool f=false;
      for(int i=0; i<h; i++){
         for(int j=0; j<w; j++){
            f|=D[i][j];
         }
      }
      if(!f) return false;
      //Delete
      for(int i=0; i<h; i++){
         for(int j=0; j<w; j++){
            if(D[i][j]) d[i][j]='.';
         }
      }
   }
}

int main(){

   cin>> h>> w>> n;
   for(int i=0; i<h; i++){
      for(int j=0; j<w; j++){
         cin>> c[i][j];
      }
   }

   bool ok=false;
   for(int i=0; i<h; i++){
      for(int j=0; j+1<w; j++){
         ok|=hoge(i, j, j+1);
      }
   }

   cout<< (ok? "YES": "NO")<< endl;

   return 0;
}