#include<iostream>
#include<algorithm>
#include<functional>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<tuple>
#include<stack>
#include<queue>
#include<deque>
#include<sstream>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<bitset>
#include<time.h>
#include<cstdlib>
#include<cassert>
#define ll long long
#define fi first
#define se second
using namespace std;
               
int n,m;
int a[100];

int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.precision(10);
  cout<<fixed;
#ifdef LOCAL_DEFINE
    freopen("in", "r", stdin); 
    freopen("out","w",stdout);
#endif
  cin>>n>>m;
  for(int i=0;i<n;i++){
    string s;cin>>s;
    for(int j=0;j<m;j++){
      a[s[j]-'a']++;
    }
  }
  if(n&1 && m&1){
    int need4=(n*m-n-m+1)/4;
    int need2=(n+m-2)/2;
    int now4=0;
    for(int i=0;i<26;){
      if(now4==need4)break;
      if(a[i]>=4){
        a[i]-=4;
        now4++;
      }else i++;
    }
    if(now4<need4){
      cout<<"No"<<endl;
      return 0;
    }
    int now2=0;
    for(int i=0;i<26;){
      if(now2==need2)break;
      if(a[i]>=2){
        a[i]-=2;
        now2++;
      }else i++;
    }
    if(now2<need2){
      cout<<"No"<<endl;
      return 0;
    }
    cout<<"Yes"<<endl;
  }else if(n&1 || m&1){
    int need4,need2;
    if(n&1){
      need4=(n*m-m)/4;
      need2=m/2;
    }else{
      need4=(n*m-n)/4;
      need2=n/2;
    }
    int now4=0;
    for(int i=0;i<26;){
      if(now4==need4)break;
      if(a[i]>=4){
        a[i]-=4;
        now4++;
      }else i++;
    }
    if(now4<need4){
      cout<<"No"<<endl;
      return 0;
    }
    int now2=0;
    for(int i=0;i<26;){
      if(now2==need2)break;
      if(a[i]>=2){
        a[i]-=2;
        now2++;
      }else i++;
    }
    if(now2<need2){
      cout<<"No"<<endl;
      return 0;
    }
    cout<<"Yes"<<endl;
  }else{
    int need4=n*m/4;
    int now4=0;
    for(int i=0;i<26;){
      if(now4==need4)break;
      if(a[i]>=4){
        a[i]-=4;
        now4++;
      }else i++;
    }
    if(now4<need4){
      cout<<"No"<<endl;
      return 0;
    }
    cout<<"Yes"<<endl;
  }
  //for(int i=0;i<26;i++){
    //cout<<a[i]<<" ";
  //}
  //cout<<endl;
  /*int nown=n,nowm=m;
  bool flag=0;
  if(n==1 || m==1)flag=1;
  bool flag2=1;
  while(nown>1 || nowm>1){
  //  cout<<1<<endl;
    if(flag)break;
    for(int i=0;i<26;i++){
      if(a[i]>=4){
        a[i]-=4;
    //    cout<<"i="<<i<<endl;
        break;
      }
      if(i==25){
        cout<<"No"<<endl;
        return 0;
      }
    }
   // cout<<nown<<" "<<nowm<<endl;
    if(flag2){
      if(nown>1)nown-=2;
      if(nowm>1)nowm-=2;
      flag2=0;
      continue;
    }
    if(nown>1)nown-=2;
    else if(nowm>1)nowm-=2;
  }
  int nown2=nown*m;
  int nowm2=nowm*n;
  if(flag){
    if(m==1){
      nown2=0;
    }
    if(n==1){
      nowm2=0;
    }
  }
//  cout<<nown<<" "<<nowm<<endl;
  //cout<<nown2<<" "<<nowm2<<endl;
  while(nown2>1){
    //cout<<2<<endl;
    for(int i=0;i<26;i++){
      if(a[i]>=2){
        a[i]-=2;
        break;
      }
      if(i==25){
        cout<<"No"<<endl;
        return 0;
      }
    }
    nown2-=2;
   // cout<<nown2<<" "<<nowm2<<endl;
  }
  while(nowm2>1){
   // cout<<3<<endl;
    for(int i=0;i<26;i++){
      if(a[i]>=2){
        a[i]-=2;
        break;
      }
      if(i==25){
        cout<<"No"<<endl;
        return 0;
      }
    }
    nowm2-=2;
   // cout<<nown2<<" "<<nowm2<<endl;
  }
  cout<<"Yes"<<endl;*/
#ifdef LOCAL_DEFINE
    cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
  return 0;
}

Measured memory_bytes: 256