/*
                             UM.
                            J@B@1                                                                    iO@1
                           Y@@@B@BB.                                                              7B@B@B@
                          :@B@i,B@B@O                                                          ,Z@B@B@B@Br
                          @B@q   i@B@BS                                                      7@B@@@O5vMB@q
                         8@@B      LB@B@i                                                  FB@@@BNjYjLE@B@
                        ,B@B:        0@@@Z                                               P@B@BM1JJ125JPB@B
                        B@BB          :@B@B                                            XB@B@Z2LuU52F2u2@B@.
                       :@B@             @@@B:                                        v@B@B8uJj51F1525uUB@B7
                       @B@O              0@@B.               ..::ir7vvYUuU777r::.   B@B@OULU2F2F151F11Y@B@S
                       B@B,               8B@B  :ruXMB@B@B@B@B@B@B@B@B@B@@@B@B@B@B@B@B@5Jj1211F1F1F2FUJO@BB
                      U@B@                 @B@B@B@B@B@@@B@B@B@MMqPS5JuYL7rq@B@OBB@B@B8Yu211F1515251515YGB@@
                      @B@u                 v@@@@MSur:.                    LB@MvvjJuU5YU252F1F1F25251F2uX@@@
                      @@@.                                                N@BML2U2UUU12F15252525251515Jk@@B
                     r@B@                                                 YB@Bju52121252515252F15251F2u5@B@
                     PB@B                                                  @@@PYUF151F25151F152F2F1F15jF@@B
                     @@BS                                                  N@@@UJ2F25252F251525151F1F1u5@B@
                     @@@7                                                   B@B@5Yj12F152F1F1F25252515jFB@B
                     B@Bi                                                    M@B@O2Luu52525212F151121UY1@B@7
                    O@B@:                                                     v@B@BMSuYJJuuUu2u2uujjYJJXB@B@M
                  7B@B@,                                                        1B@@@B@GPF1uujuu21PNMB@B@B@B@@
                 qB@B2                                                            i8B@B@B@B@B@@@@@B@B@B@q: @@@B
                MB@B:                                                                 7SBB@B@B@B@B@Zu:      @B@B
               ZB@B.                                              ,v.                                        @B@L
              LB@B,                         Y7                    @B@Bu                                      7@B@
   :B@B@@B2:  @@B7                         @B@Z                   r@B@B@BP:                                   B@BE
    BB@@@B@B@B@BE                        r@B@B                       7@B@B@B@Ou:                              iB@B
         :uM@@B@@2.           :7::::ivk@B@B@0                           :5B@B@B@B@B@B@G.                       @B@i
            BB@@@B@@         :@B@B@@@B@B@@1                                 .i5M@B@B@@@5                       M@@2
            B@B ,@B1          L0EZZG0F7:                                            .:,                        uB@MrP@M7
           2@B@                                                                                               ,O@B@B@B@B
           @B@1                                                     :@B@@@r                                :@@@@B@BL:,,
           B@Bi                         :2ZS;                      :@B@B@B@r                               L@B@B@BU
           @B@.                        @@@B@B@                     vB@B@B@B5                                   @B@i
           B@B                        7B@B@B@BM                     OB@B@B@                                   ,B@B
           @B@                         @B@B@@@i                       rL7.                                    B@BM
           B@B7.:                       NB@@M.                                                               .@B@.
  .;JEB@@@B@B@B@B@.                                                                                       .  @B@u
@@@B@B@B@B@@@B@18U                                                                                      :B@B@B@BU,
7@BOui.    ,@@B                                                                                          SP@B@B@B@B@Or
            @@@U                                                                                           B@BJ.YO@B@B@i
            r@B@                                                                                         :B@Bk     .k@B@
             B@B@                                                                                       LB@@k         2i
              B@BM                                      .7jXEGqF7:                                     OB@@L
              .B@BM                                   .B@B@B@B@B@B@.                                 :@B@B:
               .B@B@                                   @@MYr::ivG@B                                .M@B@G
                 B@@@S                                                                           ,MB@B@,
                  v@@@BF                                                                      .1B@B@Br
                    2@@B@BL                                                                ,FB@@@B8,
                      r@B@B@BF,                                                        :YBB@B@B@B
                         L@B@B@B@P7,                                           .ivXB@B@B@B@B@M@B@
                            ,1B@B@B@B@@@BOP2L7i:,.              ..,:i7LSNB@@B@B@@@B@B@B@Z5v;.LB@@
                              @B@OEB@B@@@B@B@B@B@B@B@B@B@@@B@B@B@B@B@@@B@B@B@B@BM0SJ7i::::i:,u@B@
                              B@Bu ::i;7vu2XNGOMB@B@BMB@B@B@B@B@B@@@B1UFuj77ii:::::::iir;r;i.YB@B
                              @B@L.:i:i:i::::::::::..Y@B@BMYi:i;SB@B@N:.::i:iirir;r;rii::::ivO@B@
                              B@@X::,::::iirir;riri:E@B@1         ,@B@Br:;;r;rii:i::::i7JEB@@@@@B
                              @@@B@BBq5v7ii:::::::.2@@@i  ..,..     @B@@,,:::::irv2XMB@B@B@B@2@B@:
                             .B@BBB@@@B@B@B@BMNP5u7@B@1 .,,:,,  :.   @B@P50MB@B@B@B@B@@@BS:   @@B1
                             E@B@   ijGB@B@B@B@B@B@B@Bi .,:,,..@@B@7 B@B@B@B@B@B@BM57.        kB@B
                            .@B@:          .,ivu5Nq@B@u  ..,.. SB@B@@@B@PL7i,                 ,@B@
                            @@@8                   i@B@:    .     :B@B@@                       B@@2
                          i@@@@                     0@B@u          B@@B.                       vB@B
                         ,@B@G                       L@B@BOv:.:iFB@B@M                          @B@Bi
                          vNi                          S@@B@B@B@B@BM:                            MB@N
                                                          758BMqJ,

                 .  YO.               vq                            :G       Z:
        SqOMBB@B@Br @@r rBE           @B     B@@@@@B@ONX8k    i::::.OB1.:::.u@O.::::i           @B@B@U:@@B@@BPEBu
        B@@NB@k.    5@i  uB@E.        BM     1U2uUJvirB@@Z   r@@B@B@@@B@B@B@B@B@@@B@Bi   LB@B@1 BX :@k uLLLvr@BJ:
            iB      iBi    7@     .@M8@BGMZZ         @@F            ,B       Pi          v@  Bq @i v@        B@
       vuL7r8@S7vJL7N@Z7LLri;72.   F7@Bvvv@@       @BX         @@@B@B@@@@@B@@@B@B@B      7@  @F Bi @q  @B@Bu @B
       N@B@G@@@8@BBOMB@G@BMNXG@,     B@   @@      .Bk          .:u;    i@:      Zv       7@  Bk @,;@  ,BY @B B@
            r@       @G     5.      ,@v   BZ :::,.r@E .::i,      @B     B@    .@BL       7@  @F B:i@. .@  @M @B
            7B: ,vO, @@   iB@:      @B   7@:MB@B@B@@@B@B@BM       @@.    B:  2@q         7@  BS @i 0@  B. @O B@
       ,r2EBB@B@B@Bi G@  @BB        B@   @B        @S              :    r@   ..          7B  @F @7  B7 @  @B @B
       E@B@UOBr       @B@Bi          L@0PB        .BZ        .@B@B@B@B@B@B@B@B@B@B@B@,   r@  BF @i  @G B@B@B B@
            7@,      kB@U    ;r        @@@.       .@Z                GBuL@iBBi           vB@B@q BP:5@7 @u,.  @B
            LBi   YB@BrB@    @@       @B:L@Br      BM             .M@B  rB  rB@J         v@. Pi @XZ8r  .     B@
        .   G@i B@BM.  ,B@,  @B    iB@B    N, 7r..q@k         ,LB@B8    J@,   i@B@B1r           Br           @@
        MB@B@B  ,i       B@B@B,    B@:        @B@B@F         .@BB:      P@i      :OBZ          .@U       B@B@B:
                          .ll                                           rB.                     :
*/
/*****************
 *   I<3   C++   *
 *  IWANT ANYAC  *
 * ILOVEPROGRAM! *
 *IT'SINTERESTING*
 * ILOVEPROGRAM! *
 *  INCONTESTS   *
 *   GETSCORE    *
 *    ACCODE     *
 *     LETS      *
 *      GO       *
 *Written by:    *
 *    charlieyan *
 *****************/
#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <limits>
#include <locale>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <wctype.h>
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <inttypes.h>
#include <stdbool.h>
#include <stdint.h>
#include <tgmath.h>
#include <numeric>
#include <list>
#define LL long long
#define pb push_back
#define pob pop_back
#define mp make_pair
#define FILL(a,v) memset((void*)a,v,sizeof(a))
#define FILL0(a) FILL(a,0)
#define FILL1(a) FILL(a,-1)
#define FILLBIG(a) FILL(a,0x7f)
#define ALL(a) (a).begin(),(a).end()
#define Inf ((int)0x7f7f7f7f)
#define INF ((long long)0x7f7f7f7f7f7f7f7f)
#define Mod 1000000007
#define foreach(it,x) for(__typeof(x.begin()) it=x.begin();it!=x.end();it++)
#define FOR(i,x) for(int i=0;i<x;i++)
#define RFOR(i,x) for(int i=x-1;i>=0;i--)
#define FFOR(i,a,b) for(int i=a;i<b;i++)
#define FRFOR(i,a,b) for(int i=a-1;i>=b;i--)
#define SZ(a) ((int)(a).size())
#define FI first
#define SE second
#define OVER(a) return puts(a),0
#define fastio ios::sync_with_stdio(0)
#define filei(f) freopen(f,"r",stdin)
#define fileo(f) freopen(f,"w",stdout)
#define eprintf(...) fprintf(stderr,__VA_ARGS__)
#define MASK(a) (1<<(a))
#define MASKX(x,a) ((x)<<(a))
#define BIT(a,b) ((a>>b)&1)
#define cddx(a) priority_queue<a >
#define cxdd(a) priority_queue<a,vector<a >,greater<a > >
#define deval(a) {cerr<<#a<<" = "<<a<<endl;}
#define dearr(be,en) {cerr<<#be;cerr<<" = {";for(auto i=be;i!=en;i++)cerr<<' '<<*i;cerr<<" }\n";}
#define reg register
#define prtime eprintf("\n\nTime used: %dms\n",clock());
#define PI 3.1415926535897932384626
#define TODEG(a) (a*180/PI)
//Lissin Chang loves Yang Shumeng
using namespace std;
typedef pair<int,int> pii;
typedef unsigned long long UINT;
typedef unsigned int uint;
typedef long long INT;
typedef long double ldouble;
typedef pair<INT,INT> PII;
typedef stringstream sst;
typedef istringstream iss;
typedef vector<int> vint;
typedef vector<INT> VINT;
typedef vector<pii> vpii;
typedef vector<PII> VPII;
typedef priority_queue<int> pqi;
typedef priority_queue<INT> PQI;
typedef priority_queue<pii> pqp;
typedef priority_queue<PII> PQP;
typedef priority_queue<int,vint,greater<int> > xqi;
typedef priority_queue<INT,VINT,greater<INT> > XQI;
typedef priority_queue<pii,vpii,greater<pii> > xqp;
typedef priority_queue<PII,VPII,greater<PII> > XQP;
//Coded by Charlieyan
//版权所有，翻印必究

int n, m;
char s[17][17];
int cnt1[17][27], cnt2[17][27];
int yglx[17], ygly[17];
int sx[17], sy[17];
int behun[17], belay[17];
int ls[17][17];

bool sort_cmp_1(int a,int b)
{
	for (int i = 0; i < 26; i++)
	{
		if(cnt1[a][i]<cnt1[b][i])
			return 1;
		if(cnt1[a][i]>cnt1[b][i])
			return 0;
	}
	return 0;
}
bool sort_cmp_2(int a,int b)
{
	for (int i = 0; i < 26; i++)
	{
		if(cnt2[a][i]<cnt2[b][i])
			return 1;
		if(cnt2[a][i]>cnt2[b][i])
			return 0;
	}
	return 0;
}

int main()
{
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++)
	{
		scanf("%s", s[i]);
		for (int j = 0; j < m; j++)
		{
			cnt1[i][s[i][j]-'a']++;
			cnt2[j][s[i][j]-'a']++;
			sy[j] = j;
		}
		sx[i] = i;
	}
	sort(sx, sx + n, sort_cmp_1);
	sort(sy, sy + m, sort_cmp_2);
	if(n%2==0)//n is an even number
	{
		bool can = 1;
		for (int i = 0; i < n; i += 2)//Find its friend
			for (int j = 0; j < 26; j++)
				if(cnt1[sx[i]][j]!=cnt1[sx[i+1]][j])
					can = 0;
		if(!can)
			OVER("NO");
		for (int i = 0; i < n; i += 2)
		{
			behun[i / 2] = sx[i];
			behun[n - 1 - i / 2] = sx[i + 1];
		}
	}
	else//n is an odd number
	{
		bool can = 1;
		int midline;//The mid line cannot find its friend
		for (int i = 0; i < n; i += 2)//Find its friend
		{
			if(i==n-1)
			{
				midline = sx[i];
				behun[n / 2] = sx[i];
				break;
			}
			bool ismid = 0;
			for (int j = 0; j < 26; j++)
				if(cnt1[sx[i]][j]!=cnt1[sx[i+1]][j])
				{
					if(i%2==0)
					{
						midline = sx[i];
						behun[n / 2] = sx[i];
						ismid = 1;
						i--;
						break;
					}
					else
					{
						can = 0;
						break;
					}
				}
			if(!ismid)
			{
				behun[i / 2] = sx[i];
				behun[n - 1 - i / 2] = sx[i + 1];
			}
		}
		if(!can)
			OVER("NO");
		else
		{
			//Check the mid line
			//The mid line must find friend itself, except the mid point
			int odd = 0;
			for (int i = 0; i < 26; i++)
				if(cnt1[midline][i]%2)
					odd++;
			if(odd!=(m%2))
				OVER("NO");
		}
	}
	
	if(m%2==0)//m is an even number
	{
		bool can = 1;
		for (int i = 0; i < m; i += 2)//Find its friend
			for (int j = 0; j < 26; j++)
				if(cnt2[sy[i]][j]!=cnt2[sy[i+1]][j])
					can = 0;
		if(!can)
			OVER("NO");
		for (int i = 0; i < m; i += 2)
		{
			belay[i / 2] = sy[i];
			belay[m - 1 - i / 2] = sy[i + 1];
		}
	}
	else//m is an odd number
	{
		bool can = 1;
		int midline;//The mid line cannot find its friend
		for (int i = 0; i < m; i += 2)//Find its friend
		{
			if(i==m-1)
			{
				midline = sy[i];
				belay[m / 2] = sy[i];
				break;
			}
			bool ismid = 0;
			for (int j = 0; j < 26; j++)
				if(cnt2[sy[i]][j]!=cnt2[sy[i+1]][j])
				{
					if(i%2==0)
					{
						midline = sy[i];
						belay[m / 2] = sy[i];
						ismid = 1;
						i--;
						break;
					}
					else
					{
						can = 0;
						break;
					}
				}
			if(!ismid)
			{
				belay[i / 2] = sy[i];
				belay[m - 1 - i / 2] = sy[i + 1];
			}
		}
		if(!can)
			OVER("NO");
		else
		{
			//Check the mid line
			//The mid line must find friend itself, except the mid point
			int odd = 0;
			for (int i = 0; i < 26; i++)
				if(cnt2[midline][i]%2)
					odd++;
			if(odd!=(n%2))
				OVER("NO");
		}
	}
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			ls[i][j] = s[behun[i]][belay[j]];
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			if(ls[i][j]!=ls[n-i-1][m-j-1])
				OVER("NO");
	OVER("YES");
}

Measured memory_bytes: 256