#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool solve(int board[30][30], int h, int w, int n){
    bool updated = true;
    // for(int k=0;k<h;k++){
    //     for(int l=0;l<w;l++){
    //         cout<<board[k][l];
    //     }
    //     cout<<endl;
    // }
    // cout<<endl;
    for(int j=0;j<w;j++){
        int ite=h;
        for(int i=h-1;i>=0;i--){
            if(board[i][j]){
                ite--;
                if(ite!=i)swap(board[ite][j],board[i][j]);
            }
        }
    }
    while(updated){
        updated=false;
        bool check[30][30];
        fill(check[0],check[30],false);
        for(int i=0;i<h;i++){
            int cnt=0;
            for(int j=0;j<w;j++){
                if(!board[i][j]||board[i][j]!=board[i][j-1]){
                    if(cnt>=n){
                        for(int l=0;l<cnt;l++){
                            check[i][j-1-l]=true;
                        }
                    }
                    cnt=1;
                }else{
                    cnt++;
                    if(j==w-1&&cnt>=n){
                        for(int l=0;l<cnt;l++){
                            check[i][j-l]=true;
                        }
                    }
                }
            }
        }
        for(int j=0;j<w;j++){
            int cnt=0;
            for(int i=0;i<h;i++){
                if(!board[i][j]||board[i][j]!=board[i-1][j]){
                    if(cnt>=n){
                        for(int l=0;l<cnt;l++){
                            check[i-1-l][j]=true;
                        }
                    }
                    cnt=1;
                }else{
                    cnt++;
                    if(i==h-1&&cnt>=n){
                        for(int l=0;l<cnt;l++){
                            check[i-l][j]=true;
                        }
                    }
                }
            }
        }
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                if(check[i][j]){
                    board[i][j]=0;
                    updated=true;
                }
            }
        }
        for(int j=0;j<w;j++){
            int ite=h;
            for(int i=h-1;i>=0;i--){
                if(board[i][j]){
                    ite--;
                    if(ite!=i)swap(board[ite][j],board[i][j]);
                }
            }
        }
    }
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++){
            if(board[i][j]){
                // for(int k=0;k<h;k++){
                //     for(int l=0;l<w;l++){
                //         cout<<board[k][l];
                //     }
                //     cout<<endl;
                // }
                // cout<<endl;
                return false;
            }
        }
    }

    return true;
}

int main(){
    int h,w,n;
    cin>>h>>w>>n;
    int board[30][30];
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++){
            char c;
            cin>>c;
            if(c=='.') board[i][j]=0;
            else board[i][j]=c-'A'+1;
        }
    }
    for(int i=0;i<h;i++){
        for(int j=0;j<w-1;j++){
            if(board[i][j]!=board[i][j+1]){
                int temp[30][30];
                fill(temp[0],temp[30],0);
                for(int k=0;k<h;k++){
                    for(int l=0;l<w;l++){
                        temp[k][l]=board[k][l];
                    }
                }
                swap(temp[i][j],temp[i][j+1]);
                if(solve(temp,h,w,n)){
                    cout<<"YES"<<endl;
                    return 0;
                }
            }
        }
    }
    cout<<"NO"<<endl;
    return 0;
}

Measured memory_bytes: 3076