#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <memory.h>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <ctime>
#include <iostream>
#include <functional>
#include <complex>
#include <iomanip>
#include <list>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<double, double> pdd;
typedef vector<pdd> vdd;
typedef pair<pii, int> p3i;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<ull> vull;
typedef vector<vll> vvll;
typedef vector<pii> vii;
typedef vector<p3i> v3i;
typedef vector<vii> vvii;
typedef vector<p3i> vp3i;
typedef long double ld;
typedef vector<double> vd;
typedef vector<ld> vld;
typedef vector<pii> vpii;
typedef unsigned long long ull;
typedef long double ld;

#define pb push_back
#define mp make_pair
#define REP(i, n) for (int (i) = 0; (i) < (n); (i)++)
#define REPD(i, n) for (int (i) = (n) - 1; (i) >= 0; (i)--)
#define FOR(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
#define FORD(i,a, b) for (int (i) = (a); (i) >= (b); (i)--)
#define sz(v) (int)(v).size()
#define all(v) (v).begin(), (v).end()
#define rv(v) reverse(all(v))
#define CL(v, val) memset((v), (val), sizeof((v)))
#define SORT(a) sort(all(a))
#define un(v) SORT(v), (v).resize(unique(all(v)) - (v).begin())
#define eps 1.0e-4
#define X first
#define Y second
#define bit(n) (1 << (n))
#define bit64(n) (ll(1) << (n))
#define sqr(n) ((n) * (n))
#define INF 1000000000
#define MAXN 1001
#define PI atan(1)*4
#define mod 1000000007
#define MAXULL 18446744073709551615



ll gcd(ll a, ll b)
{
	return b ? gcd(b, a % b) : a;
}
ll sumofnumb(ll n)
{
	ll x = n;
	ll ans = 0;
	while (x > 0)
	{
		ans += x % 10;
		x /= 10;
	}
	return ans;
}
ll binpow(ll a, ll n) {
	ll res = 1;
	while (n) {
		if (n & 1)
			res *= a;

		a *= a;
		n >>= 1;
	}
	return res;
}
ll binpowmod(ll a, ll n, ll p) {
	ll res = 1;
	while (n) {
		if (n & 1)
		{
			res *= a;
			res %= p;
		}
		a *= a;
		a %= p;
		n >>= 1;
		n %= p;
	}
	return res % p;
}
ll nsk(ll a, ll b)
{
	return a * b / gcd(a, b);
}
ll vhodg(ll n, ll p = 2)
{
	ll ans = 0;
	while (n%p == 0)
	{
		ans++;
		n /= p;
	}
	return ans;
}
ll maxstep(ll n, ll p = 2)
{
	ll ans = -1;
	while (n > 0)
	{
		ans++;
		n /= p;
	}
	return ans;
}
string sum(string a, string b)
{
	string result;
	while (a.size() > b.size())
	{
		b = "0" + b;
	}
	while (a.size() < b.size())
	{
		a = '0' + a;
	}

	int rest = 0;
	while (!a.empty())
	{
		rest += int(a[a.size() - 1] - '0') + int(b[b.size() - 1] - '0');
		if (rest >= 10)
		{
			result = char(rest % 10 + '0') + result;
			rest /= 10;
		}
		else
		{
			result = char(rest + '0') + result;
			rest = 0;
		}
		a.erase(a.size() - 1);
		b.erase(b.size() - 1);
	}
	if (rest > 0)
		result = char(rest + '0') + result;
	return result;
}
bool palindr(string s)
{
	int x = 0;
	REP(i, s.size() / 2)
	{
		if (s[i] == s[s.size() - i - 1])
		{
			x++;
		}
	}
	return (x == s.size() / 2);
}


char ALF[26] = { 'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M' };
char alf[26] = { 'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m' };





int main()
{
	ll n, m;
	cin >> n >> m;
	ll arr[26] = {};
	REP(i, 26)
	{
		arr[i] = 0;
	}
	REP(i, n*m)
	{
		char x;
		cin >> x;
		REP(j, 26)
		{
			if (x == alf[j])
			{
				arr[j]++;
			}
		}
	}
	ll numb1 = 0, numb2 = 0;
	REP(i, 26)
	{
		numb1 += arr[i] / 4;
		if (arr[i] % 2 == 1)
		{
			numb2++;
		}
	}

	if (numb2 > 1)
	{
		cout << "No";
		//system("pause");
		return 0;
	}
	if (n % 2 == 1 && m % 2 == 1)
	{
		if (numb2 == 0)
		{
			cout << "No";
			system("pause");
			return 0;
		}
		else
		{
			if (numb1 >= (n / 2)*(m / 2))
			{
					cout << "Yes";
					system("pause");
					return 0;
	
			}
			else
			{
				cout << "No";
				system("pause");
				return 0;
			}
		}
	}
	else
	{
		if (numb2 == 1)
		{
			cout << "No";
			//system("pause");
			return 0;
		}
		else
		{
			if (numb1 >= (n / 2)*(m / 2))
			{
				cout << "Yes";
				//system("pause");
				return 0;

			}
			else
			{
				cout << "No";
				//system("pause");
				return 0;
			}
		}
	}

	//system("pause");
	return 0;
}



Measured memory_bytes: 504