#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long long ll;
char str[20][20];
char s_str[20][20];
bool flag[20];
bool f_flag[20];
bool ff = false;
bool dfs(int H,int W,int cn);
bool check(int H,int W);
int main(void)
{
    int H,W;
    scanf("%d %d",&H,&W);
    for(int i = 0; i < H; i++)
        scanf("%s",str[i]);
    memset(flag,0,sizeof(flag));
    ff = false;
    if(W%2)
    {
        for(int i = 0;i < W;i++)
        {
            memset(flag,0,sizeof(flag));
            flag[i] = true;
            for(int j = 0;j < H;j++)
                s_str[j][W/2] = str[j][i];
            if(dfs(H,W,0))
            {
                printf("YES\n");
                return 0;
            }
            flag[i] = true;
        }
        printf("NO\n");
    }
    else
    {if(dfs(H,W,0))
        printf("YES\n");
    else printf("NO\n");}
    return 0;
}
bool dfs(int H,int W,int cn)
{
    if(ff)
        return true;
    int cnt = 0,id;
    for(int i = 0; i < W; i++)
    {
        if(!flag[i])
        {
            cnt++;
            id = i;
        }
    }
    if(cnt == 0)
    {
        memset(f_flag,0,sizeof(f_flag));
        if(check(H,W))
            return true;
        return false;
    }
    if(cnt >= 2)
    {
        int idl;
        for(int i = 0; i < W; i++)
        {
            if(!flag[i])
            {
                idl = i;
                flag[i] = true;
                break;
            }
        }
        for(int i = idl + 1; i < W; i++)
        {
            if(!flag[i])
            {
                for(int j = 0; j < H; j++)
                {
                    s_str[j][cn] = str[j][idl];
                    s_str[j][W-cn-1] = str[j][i];
                }
                flag[i] = true;
                bool f = dfs(H,W,cn+1);
                if(f)ff = true;
                flag[i] = false;
                if(f)
                    return true;
            }
        }
        flag[idl] = false;
    }
    return false;
}
bool check(int H,int W)
{
    if(H%2==0)
    {
        for(int i = 0; i < H; i++)
        {
            if(!f_flag[i])
            {
                for(int j = i+1; j < H; j++)
                {
                    if(!f_flag[j])
                    {
                        int f = false;
                        for(int s = 0; s < W; s++)
                        {

                            if(s_str[i][s] != s_str[j][W-s-1])
                            {
                                f = true;
                                break;
                            }
                        }
                        if(!f)
                        {
                            f_flag[i] = true;
                            f_flag[j] = true;
                            break;
                        }
                    }
                }
            }
            if(!f_flag[i])
                return false;
        }
        return true;
    }
    else
    {

        int cn = 0,id = -1;
        for(int i = 0; i < H; i++)
        {
            if(!f_flag[i])
            {
                for(int j = i+1; j < H; j++)
                {
                    if(!f_flag[j])
                    {
                        int f = false;
                        for(int s = 0; s < W; s++)
                        {
                            if(s_str[i][s] != s_str[j][W-s-1])
                            {
                                f = true;
                                break;
                            }
                        }
                        if(!f)
                        {
                            f_flag[i] = true;
                            f_flag[j] = true;
                            break;
                        }
                    }
                }
            }
            if(!f_flag[i])
                cn++,id = i;
            if(cn > 1)
                return false;
        }
        for(int i = 0; i <= (W-1)/2; i++)
        {

            if(s_str[id][i]!=s_str[id][W-i-1])
                return false;
        }
        return true;
    }
}


Measured memory_bytes: 256