/*  Success may not come to me immediately,
 *  but it will come definitely....
 */
#include <bits/stdc++.h>
//=====================================================================
using namespace std;
//=====================================================================
#define opt ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
//=====================================================================
#define li      int64_t
#define ld      double_t
#define ulli    uint64_t
//=====================================================================
#define rep(i,a,b)  for(i=a;i<b;i++)
#define repr(i,a,b) for(i=a;i>b;i--)
#define repi(i,v)   for(i=v.begin();i!=v.end();i++)
#define repir(i,v)  for(i=v.rbegin();i!=v.rend();i++)
#define elif        else if
#define mset(a,b)   memset(a,b,sizeof(a))
#define nl          cout<<'\n'
//=====================================================================
typedef vector<li>       vli;
typedef vector<string>   vstr;
typedef pair<li,li>      pli;
typedef pair<li,pli >    ppli;
typedef pair<li,ppli >   pppli;
typedef vector<pli >     vpli;
typedef vector<ppli >    vppli;
typedef vector<pppli >   vpppli;
//=====================================================================
#define pb  push_back
#define pob pop_back
#define pf  push_front
#define pof pop_front
#define all(v)  v.begin(),v.end()
#define itr iterator
#define rtr reverse_iterator
#define sz  size()
#define lb  lower_bound
#define ub  upper_bound
#define bs  binary_search
#define mp  make_pair
#define F   first
#define S   second
//=====================================================================
#define mod (li)(1e9+7)
#define inf (li)(1e18)
#define MX1 (li)(1e5+5)
#define MX2 (li)(1e6+5)
#define pi  acos(-1)
//=====================================================================
li power(li a,li b){li ans=1;while(b){if(b&1){ans=(ans*a)%mod;}
a=(a*a)%mod;b>>=1;}return ans;}
//=====================================================================
li mmi(li n){return power(n,mod-2);}
//=====================================================================
li two(li n){return (1LL<<n);}
//=====================================================================
void onbit(li &n,li x){n|=two(x);}
//=====================================================================
void offbit(li &n,li x){n&=~two(x);}
//=====================================================================
li cntbit(li n){li res=0;while(n and ++res)n-=n&-n;return res;}
//=====================================================================
li dx[]={-2,-2,+1,-1};li dy[]={+1,-1,-2,-2};
//=====================================================================
/*------------------------MAIN CODE BEGINS NOW!------------------------*/

li n,m,cnt[27];
char a[105][105];

void solve(){
  li i,j;cin>>n>>m;
  rep(i,0,n){
    rep(j,0,m){
      cin>>a[i][j];
      cnt[a[i][j]-'a']++;
    }
  }
  sort(cnt,cnt+26);
  reverse(cnt,cnt+26);
  li ans=n*m;
  rep(i,0,26){
    while(cnt[i]>=4){
      if(n%2==1 and m%2==0 and ans==m) break;
      if(n%2==0 and m%2==1 and ans==n) break;
      if(n%2==1 and m%2==1 and ans==n+m-1) break;
      ans-=4;
      cnt[i]-=4;
    }
  }
  if(n%2==1 and m%2==0 and ans!=m){
    cout<<"No";
    return ;
  }
  if(n%2==0 and m%2==1 and ans!=n){
    cout<<"No";
    return ;
  }
  if(n%2==0 and m%2==0 and ans!=0){
    cout<<"No";
    return ;
  }
  if(n%2==1 and m%2==1 and ans!=m+n-1){
    cout<<"No";
    return ;
  }
  rep(i,0,26){
    while(cnt[i]>=2){
      if(n%2==1 and m%2==1 and ans==1) break;
      ans-=2;
      cnt[i]-=2;
    }
  }
  if(n%2==1 and m%2==1){
    rep(i,0,26){
      if(cnt[i]==1){
        ans--;
        break;
      }
    }
  }
  if(ans==0){
    cout<<"Yes";
  }else cout<<"No";
}

int main(){
  opt
  #ifndef ONLINE_JUDGE
  #endif
  li t=1;
  //cin>>t;
  while(t--){
    solve();
  }
  return 0;
}

Measured memory_bytes: 256