// author: lkx
// Problem:
// ID:
#include<bits/stdc++.h>
using namespace std;

#define pii pair<int,int>
#define fi first
#define se second
#define PB push_back
#define MP make_pair
#define PH push
#define ll long long
#define ui unsigned int
#define HASH 233

const int MOD=1e9+7;

int h,w;
char a[15][15];
int num[30];

int main()
{
	scanf("%d%d",&h,&w);
	for(int i=0;i<h;i++)
		for(int j=0;j<w;j++)
			cin>>a[i][j];
	vector<ui> vec;
	vec.clear();
	for(int i=0;i<h;i++)
	{	
		ui hs=0;
		for(int j=0;j<30;j++) num[j]=0;
		for(int j=0;j<w;j++) num[a[i][j]-'a']++;
		for(int j=0;j<30;j++) hs=hs*233+num[j];
//		for(int j=0;j<30;j++) cout<<num[j]<<" "; puts("");
//		cout<<hs<<endl;
		vec.PB(hs);
	}
	int diff=0;
	sort(vec.begin(),vec.end());
	int bf=vec[0],n=1;
	for(int i=1;i<h;i++)
	{
		if(vec[i]!=bf) 
		{	
			if(n%2==1) diff++;
			n=0,bf=vec[i];	
		}	
		n++;
	}  
	if(n%2==1) diff++;
	if(diff>1){puts("NO"); return 0;} 
	vec.clear();
	for(int i=0;i<w;i++)
	{
		ui hs=0;
		for(int j=0;j<30;j++) num[j]=0;
		for(int j=0;j<h;j++) num[a[i][j]-'a']++;
		for(int j=0;j<30;j++) hs=hs*233+num[j];
		vec.PB(hs);
	}
	diff=0;
	sort(vec.begin(),vec.end());
	bf=vec[0],n=1;
	for(int i=1;i<w;i++)
	{
		if(vec[i]!=bf) 
		{
			if(n%2==1) diff++;
			n=0,bf=vec[i];	
		}	
		n++;
	} 
	if(n%2==1) diff++;
	if(diff>1){puts("NO"); return 0;} 
	puts("YES");
	return 0;
}
