#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int tmp_c=0;
int H,W,N,i,j,mh[4]={0,0,1,-1},mw[4]={1,-1,0,0},flg[31][31];
char M[31][31],T[31][31],t;
int limW(int w){return 0<=w&&w<W;}
int limH(int h){return 0<=h&&h<H;}
int dfs(char(*M)[31],int h,int w,int d,char t)
{
	int r=0;
	if(limW(w)&&limH(h)&&M[h][w]==t)
		r=dfs(M,h+mh[d],w+mw[d],d,t)+1;
	return r;
}
void swap(char *a,char *b){char c=*a;*a=*b;*b=c;}
void drop(char(*M)[31])
{
	int h,w,lp[31];
	for(w=0;w<W;w++)
		lp[w]=H;
	for(h=H-1;h>=0;h--)
		for(w=0;w<W;w++)
		{
			if(M[h][w]!='.')
			{
				if(h<H-1&&M[h+1][w]=='.')
				{
					swap(&M[lp[w]-1][w],&M[h][w]);
					lp[w]--;
				}
				else 
					lp[w]=h;
			}
		}
}
void del(char(*M)[31],int h,int w,int d,int c)
{
	int i;
	for(i=0;i<c;h+=mh[d],w+=mw[d],i++)
		flg[h][w]=1;
}
int judge(char(*M)[31])
{
	int h,w,c[4],i,f=0;
	for(h=0;h<H;h++)
		for(w=0;w<W;w++)
		{
			if(M[h][w]!='.'&&flg[h][w]==0)
			{
				for(i=0;i<4;i++)
					c[i]=dfs(T,h+mh[i],w+mw[i],i,M[h][w]);
				if(c[0]+c[1]+1>=N)
				{
					flg[h][w]=1;
					del(T,h+mh[0],w+mw[0],0,c[0]);
					del(T,h+mh[1],w+mw[1],1,c[1]);
					f=1;
				}
				if(c[2]+c[3]+1>=N)
				{
					flg[h][w]=1;
					del(T,h+mh[2],w+mw[2],2,c[2]);
					del(T,h+mh[3],w+mw[3],3,c[3]);
					f=1;
				}
			}
		}
	for(h=0;h<H;h++)
		for(w=0;w<W;w++)
			if(flg[h][w])
				M[h][w]='.';
	return f;
}
int check(char(*M)[31])
{
	int h,w;
	for(h=0;h<H;h++)
		for(w=0;w<W;w++)
			if(M[h][w]!='.')
				return 0;
	return 1;
}
int main()
{
	
	scanf("%d%d%d\n",&H,&W,&N);
	for(i=0;i<H;i++)gets(M[i]);
	for(i=0;i<H;i++)
		for(j=0;j<W-1;j++)
		{
			memcpy(T,M,sizeof(T));
			
			if(T[i][j]!='.'||T[i][j+1]!='.')
			{
				swap(&T[i][j],&T[i][j+1]);
				do{
				memset(flg,0,sizeof(flg));
				drop(T);
				}while(judge(T));
				if(check(T))
				{
					puts("YES");
					return 0;
				}
			}
		}
	puts("NO");
	return 0;
}