#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef unsigned __int128 HASH;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef pair<ull, ull> pullull;
typedef pair<ll,int> plli;
typedef pair<double, int> pdbi;
typedef pair<int,pii> pipii;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<pii> vpii;
typedef vector<vector<int>> mat;

#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n);i>0;i--)
#define rrep2(i,a,b) for (int i=(a);i>b;i--)
#define pb push_back
#define fi first
#define se second
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()

const ll hmod1 = 999999937;
const ll hmod2 = 1000000000 + 9;
const ll INF = 1<<30;
const ll mod = 10000 + 7;
const int dx4[4] = {1, 0, -1, 0};
const int dy4[4] = {0, 1, 0, -1};
const int dx8[8] = {1, 1, 1, 0, 0, -1, -1, -1};
const int dy8[8] = {0, 1, -1, 1, -1, 0, 1, -1};
const double pi = 3.141592653589793;

#define int long long
#define addm(X, Y) (X) = ((X) + ((Y) % mod) + mod) % mod

int h, w;
string a[105];
int cnt[26];

signed main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    cin >> h >> w;
    rep(i, h) cin >> a[i];
    bool ok = true;
    rep(i, h)rep(j, w) cnt[a[i][j] - 'a']++;
    if (h == 1 && w == 1) {
        cout << "Yes" << endl;
        return 0;
    }
    if (h == 1) {
        if (w % 2 == 0) {
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 == 1) cnt1++;
            }
            if (cnt1 == 0) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
        else {
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 == 1) cnt1++;
            }
            if (cnt1 == 1) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
        return 0;
    }
    if (w == 1) {
        if (h % 2 == 0) {
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 == 1) cnt1++;
            }
            if (cnt1 == 0) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
        else {
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 == 1) cnt1++;
            }
            if (cnt1 == 1) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
        return 0;
    }
    if (h % 2 == 0) {
        if (w % 2 == 0) {
            /*
            int t = h * w;
            rep(i, 26) {
                while (cnt[i] >= 4) {
                    cnt[i] -= 4;
                    t -= 4;
                }
            }*/
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 4 != 0) cnt1++;
            }
            if (cnt1 == 0) {
                cout << "Yes" << endl;
            }
            else {
                cout << "No" << endl;
            }
        }
        else {
            int t = h * w - h;
            rep(i, 26) {
                while (cnt[i] >= 4) {
                    cnt[i] -= 4;
                    t -= 4;
                }
            }
            if (t != 0) {
                cout << "No" << endl;
                return 0;
            }
            /*
            rep(i, 26) {
                while (cnt[i] >= 2) {
                    cnt[i] -= 2;
                    t -= 2;
                }
            }
            */
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 != 0) cnt1++;
            }
            if (cnt1 == 0) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
    }
    else {
        if (w % 2 == 0) {
            int t = h * w - w;
            rep(i, 26) {
                while (cnt[i] >= 4) {
                    cnt[i] -= 4;
                    t -= 4;
                }
            }
            if (t != 0) {
                cout << "No" << endl;
                return 0;
            }
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 != 0) cnt1++;
            }
            if (cnt1 == 0) cout << "Yes" << endl;
            else cout << "No" << endl;
            /*
            t = w;
            rep(i, 26) {
                while (cnt[i] >= 2) {
                    cnt[i] -= 2;
                    t -= 2;
                }
            }
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] >= 1) cnt1++;
            }
            if (t == 0 && cnt1 == 0) cout << "Yes" << endl;
            else cout << "No" << endl;
            */
        }
        else {
            int t = h * w - h - w + 1;
            rep(i, 26) {
                while (cnt[i] >= 4) {
                    cnt[i] -= 4;
                    t -= 4;
                }
            }
            if (t != 0) {
                cout << "No" << endl;
                return 0;
            }
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] % 2 == 1) cnt1++;
            }
            if (cnt1 == 1) cout << "Yes" << endl;
            else cout << "No" << endl;
            /*
            rep(i, 26) {
                while (cnt[i] >= 2) {
                    cnt[i] -= 2;
                    t -= 2;
                }
            }
            int cnt1 = 0;
            rep(i, 26) {
                if (cnt[i] == 1) cnt1++;
            }
            if (t == 1 && cnt1 == 1) cout << "Yes" << endl;
            else cout << "No" << endl;
            */
        }
    }
}


Measured memory_bytes: 256