/*
AizuOnline A2232
Title Ennichi
*/
#include <stdio.h>
// Select Below
//#include <stdlib.h>
//#include <string.h>
//#include <float.h>
//#include <math.h>
//#include <limits.h>
//Global data section
int w,h,n;
char ban[30][30];
char ban2[30][30];
char flag[30][30];
//
int isempty()
{
        int i,j;

        for(i=0;i<h;i++)
                for(j=0;j<w;j++)
                        if(isupper(ban2[i][j]))
                                return(0);
        
        return(-1);
}
void print_ban(char ban[][30],int num)
{
        int i,j;

        //if(num!=4)
                return;

        printf("---%d---\n",num);
        for(i=0;i<h;i++)
        {
                for(j=0;j<w;j++)
                        printf("%c",ban[i][j]);
                printf("\n");
        }
}
void clear_flag()
{
        int i,j;

        for(i=0;i<h;i++)
                for(j=0;j<w;j++)
                        flag[i][j]=0;
}
chk_right(int y,int x)
{
        int i;
        for(i=1;i<w-x;i++)
                if(ban2[y][x+i]!=ban2[y][x])
                        return(i);
        return(w-x);
}
chk_down(int y,int x)
{
        int i;
        for(i=1;i<h-y;i++)
                if(ban2[y+i][x]!=ban2[y][x])
                        return(i);
        return(h-y);
}

void set_flag_right(int y,int x,int l)
{
        int i;
        for(i=0;i<l;i++)
                flag[y][x+i]+=1;
}
void set_flag_down(int y,int x,int l)
{
        int i;
        for(i=0;i<l;i++)
                flag[y+i][x]+=2;
}
void fall_block_in_space()
{
        int i,j,k;

        for(i=0;i<h;i++)
                for(j=0;j<w;j++)
                        if(flag[i][j])
                                ban2[i][j]='*';
        print_ban(ban2,3);

        for(i=h-1;i>=0;i--)
                for(j=0;j<w;j++)
                        while(ban2[i][j]=='*')
                        {
                                for(k=i;k>0;k--)
                                        ban2[k][j]=ban2[k-1][j];
                                ban2[0][j]='.';
                        }
}
int can_all_erase()
{
        int i,j,ret1,ret2,erase_flag;

        do {       
                clear_flag();
                erase_flag=0;
                for(i=0;i<h;i++)
                        for(j=0;j<w;j++)
                                if(isalpha(ban2[i][j]))
                                {
                                        if(!(flag[i][j] & 1))
                                        {
                                                ret1=chk_right(i,j);
                                                //printf("CHR %d %d %d\n",i,j,ret1);
                                                if(ret1 >= n)
                                                {
                                                        erase_flag=-1;                   
                                                        set_flag_right(i,j,ret1);
                                                }
                                        }
                                        if(!(flag[i][j] & 2))
                                        {
                                                ret2=chk_down(i,j);
                                                //printf("CHD %d %d %d\n",i,j,ret2);
                                                if(ret2 >= n)
                                                {
                                                        erase_flag=-1;
                                                        set_flag_down(i,j,ret2);
                                                }
                                        }
                                }
                if(erase_flag)
                {
                        print_ban(ban2,2);
                        fall_block_in_space();
                        print_ban(ban2,4);
                }
        
        }while(erase_flag);
        return(isempty());
}
 
void copy_ban()
{
        int i,j;

        for(i=0;i<h;i++)
                for(j=0;j<w;j++)
                        ban2[i][j]=ban[i][j];
}

int all_erasable()
{
        int i,j,wk,ret=0;
        for(i=0;i<h;i++)
                for(j=0;j<w;j++)
                {                        
                        // swap lower
                        if(i<h-1 
                           && (isalpha(ban[i][j]) 
                               || isalpha(ban[i+1][j]))
                           && (ban[i][j] != ban[i+1][j]))
                        {
                                copy_ban();
                                wk=ban2[i][j];
                                ban2[i][j]=ban2[i+1][j];
                                ban2[i+1][j]=wk;
                                print_ban(ban2,1);
                                ret=can_all_erase();
                                if(ret)
                                        return(-1);
                        }

                        // swap right
                        if(j<w-1 
                           && (isalpha(ban[i][j]) 
                               || isalpha(ban[i][j+1]))
                           && (ban[i][j] != ban[i][j+1]))
                        {
                                copy_ban();
                                wk=ban2[i][j];
                                ban2[i][j]=ban2[i][j+1];
                                ban2[i][j+1]=wk;
                                print_ban(ban2,1);
                                ret=can_all_erase();
                                if(ret)
                                        return(-1);
                        }
                }
        return(0);
}
main()
{
        int i,ret;

        while(EOF!=scanf("%d %d %d ",&h,&w,&n) && (h||w||n))
        {
                for(i=0;i<h;i++)
                        scanf("%s",&ban[i][0]);
                print_ban(ban,1);

                ret=all_erasable();

                printf("%s\n",ret?"YES":"NO");

                break;
        }
return(0);
}