#include<iostream>
#include<queue>
#include<map>
#include<string>
#include<vector>
#include<algorithm>
#define all(c) c.begin(),c.end()
#define pb push_back
using namespace std;
int h,w,n;
vector<string> st(vector<string> s,vector<vector<bool> > f){
	for(int i=0;i<w;i++){
		string t="";
		for(int j=h-1;j>=0;j--){
			if(isalpha(s[j][i])&&!f[j][i]){
				t+=s[j][i];
			}
		}
		for(int j=0;j<t.size();j++){
			s[h-1-j][i]=t[j];
		}
		for(int j=t.size();j<h;j++){
			s[h-1-j][i]='.';
		}
	}
	return s;
}
bool ret(vector<string> s,int cnt){
	vector<vector<bool> > f(h,vector<bool>(w));
	int sum=0;
	for(int i=0;i<h;i++){
		for(int j=0;j<w-1;j++){
			if(!isalpha(s[i][j]))
				continue;
			int a=1;
			for(int k=j;k<w-1;k++){
				if(s[i][k]==s[i][k+1]){
					a++;
				}else break;
			}
			if(a>=n){
				for(int k=0;k<a;k++){
					if(!f[i][k+j]){
						sum++;
					}
					f[i][k+j]=true;
				}
			}
		}
	}
	for(int i=0;i<w;i++){
		for(int j=0;j<h-1;j++){
			if(!isalpha(s[j][i]))
				continue;
			int a=1;
			for(int k=j;k<h-1;k++){
				if(s[k][i]==s[k+1][i]){
					a++;
				}else break;
			}
			if(a>=n){
				for(int k=0;k<a;k++){
					if(!f[k+j][i]){
						sum++;
					}
					f[k+j][i]=true;
				}
			}
		}
	}
	if(cnt-sum==0)
		return true;
	if(!sum)
		return false;
	return ret(st(s,f),cnt-sum);
	
}
int main(){
	while(cin>>h>>w>>n){
		int cnt=0;
		vector<string> s(h);
		for(int i=0;i<h;i++){
			cin>>s[i];
		for(int j=0;j<w;j++){
			if(s[i][j]!='.')
				cnt++;
		}
	}
	bool flag=false;
	for(int i=0;i<h;i++){
		for(int j=0;j<w-1;j++){
			swap(s[i][j],s[i][j+1]);
			flag=ret(st(s,vector<vector<bool> >(h,vector<bool>(w))),cnt);
			if(flag){
				cout<<"YES"<<endl;
				break;
			}
			swap(s[i][j],s[i][j+1]);
		}
		if(flag)
			break;
	}
	if(!flag)
			cout<<"NO"<<endl;
	}
	return 0;
}