#include <bits/stdc++.h>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define REP(i,n) for(ll i=0;i<n;i++)
#define FOR(i,n1,n2) for(ll i=n1;i<n2;i++)
#define bFOR(i,n1,n2) for(ll i=n1;i>=n2;i--)
#define speed_up    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
typedef long long int ll;
typedef pair<ll,ll> Pi;
typedef tuple<ll,ll,ll> Tu;
const int INF=(ll)(1LL<<30)-1;
const double INFd=100000000000.0;
const double PI=3.14151926535;
const ll INFl=(ll)9223372036854775807;
const int MAX=10000;
const ll MOD=(ll)1e9+7;
const ll tMOD=(ll)998244353;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a, b)*b;}
int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};
int mdx[8]={0,1,0,-1,1,1,-1,-1},mdy[8]={-1,0,1,0,1,-1,1,-1};


template<typename A, size_t N, typename T>
void Fill(A (&array)[N], const T &val){
    std::fill( (T*)array, (T*)(array+N), val );
}

int h,w,n;
char c[30][30];

void disappear(){
    int t[30][30];
    REP(i,30)REP(j,30)t[i][j]=0;
    for(int i=0;i<h;i++){
        for(int j=0;j<w-n+1;j++){
            if(c[i][j]=='.')continue;
            int flag=1;
            for(int k=j+1;k<j+n;k++){
                if(c[i][j]!=c[i][k])flag=0;
            }
            if(flag){
                for(int k=j;k<j+n;k++){
                    t[i][k]=1;
                }
            }
        }
    }
    
    for(int i=0;i<w;i++){
        for(int j=0;j<h-n+1;j++){
            if(c[j][i]=='.')continue;
            int flag=1;
            for(int k=j+1;k<j+n;k++){
                if(c[j][i]!=c[k][i])flag=0;
            }
            if(flag){
                for(int k=j;k<j+n;k++){
                    t[k][i]=1;
                }
            }
        }
    }
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++){
            if(t[i][j])c[i][j]='.';
        }
    }
    return;
}

void falling(){
    int flag=0;
    for(int i=0;i<h-1;i++){
        for(int j=0;j<w;j++){
            if(c[i][j]!='.'&&c[i+1][j]=='.'){
                flag=1;
                swap(c[i][j],c[i+1][j]);
            }
        }
    }
    if(flag)falling();
    return;
}
int check(){
    int ret=1;
    REP(i,h)REP(j,w)if(c[i][j]!='.')ret=0;
    return ret;
}
int main(){
    cin>>h>>w>>n;
    char cc[30][30];
    REP(i,h)REP(j,w){
        cin>>c[i][j];
        cc[i][j]=c[i][j];
    }
    int ans=0;
    REP(i,h){
        REP(j,w-1){
            
            REP(k,h)REP(l,w)c[k][l]=cc[k][l];
                swap(c[i][j],c[i][j+1]);
                falling();
                for(int i=0;i<100;i++){
                    disappear();
                    falling();
                }
                if(check()){
                    ans=1;
                }
            
        }
    }
    if(ans)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    return 0;
}
