#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <cassert>
#include <queue>
#include <ctime>
#include <string>
#include <cstring>
#include <random>
#define mp make_pair
#define pb push_back
#define NAME ""
#define y1 y1_423
#define list lista

using namespace std;

typedef long long ll;
typedef long double ld;

template<typename T>
ostream& operator << (ostream& cout, const vector<T> &a) {
	if ((int)a.size() == 0) {
		return (cout << "()");
	}
	cout << "(" << a[0];
	for (int i = 1; i < (int)a.size(); i++) {
		cout << "; " << a[i];
	}
	return (cout << ")");
}

template<typename T>
ostream& operator << (ostream& cout, const set<T> &a) {
	if ((int)a.size() == 0) {
		return (cout << "{}");
	}
	auto it = a.begin();
	cout << "{" << *it;
	++it;
	for (; it != a.end(); ++it) {
		cout << "; " << *it;
	}
	return (cout << "}");
}

template<typename T>
ostream& operator << (ostream& cout, const multiset<T> &a) {
	if ((int)a.size() == 0) {
		return (cout << "{}");
	}
	auto it = a.begin();
	cout << "{" << *it;
	++it;
	for (; it != a.end(); ++it) {
		cout << "; " << *it;
	}
	return (cout << "}");
}

template<typename T1, typename T2>
ostream& operator << (ostream& cout, const pair<T1, T2> &a) {
	return cout << "(" << a.first << "; " << a.second << ")";
}

random_device gen;
mt19937 rnd(gen());

const int nmax = 2000 * 1000;
const int inf = 2000 * 1000 * 1000;
const ll infl = 1000ll * 1000ll * 1000ll * 1000ll * 1000ll * 1000ll;
const int mod = 1000 * 1000 * 1000 + 7;
const ld pi = acos(-1.0);

void fail() {
    cout << "No\n";
    exit(0);
}

int cnt[nmax];
string s;

int main() {
	//freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
	//freopen(NAME".in", "r", stdin);freopen(NAME".out", "w", stdout);
    int n, m;
    cin >> n >> m;
    getline(cin, s);
    for (int i = 0; i < n; i++) {
        getline(cin, s);
        for (char c : s) {
            cnt[c]++;
        }
    }
    for (int i = 0; i < n / 2; i++) {
        for (int j = 0; j < m / 2; j++) {
            bool f = false;
            for (char c = 'a'; c <= 'z'; c++) {
                if (cnt[c] >= 4) {
                    cnt[c] -= 4;
                    f = true;
                    break;
                }
            }
            if (!f) {
                fail();
            }
        }
    }
    if (n % 2 == 1) {
        for (int j = 0; j < m / 2; j++) {
            bool f = false;
            for (char c = 'a'; c <= 'z'; c++) {
                if (cnt[c] >= 2) {
                    cnt[c] -= 2;
                    f = true;
                    break;
                }
            }
            if (!f) {
                fail();
            }
        }
    }
    if (m % 2 == 1) {
        for (int i = 0; i < n / 2; i++) {
            bool f = false;
            for (char c = 'a'; c <= 'z'; c++) {
                if (cnt[c] >= 2) {
                    cnt[c] -= 2;
                    f = true;
                    break;
                }
            }
            if (!f) {
                fail();
            }
        }
    }
    if (n % 2 == 1 && m % 2 == 1) {
        bool f = false;
        for (char c = 'a'; c <= 'z'; c++) {
            if (cnt[c]) {
                cnt[c]--;
                f = true;
                break;
            }
        }
        if (!f) {
            fail();
        }
    }
    cout << "Yes\n";
	return 0;
}



Measured memory_bytes: 256