#include<iostream>
#include<map>
#include<vector>
#include<algorithm>

using namespace std;

int H,W;
typedef pair<int,int>P;

int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};

const int TYPEX = 1;
const int TYPEY = 2;
const int ELSE = 3;

class Data{
public:
  vector<P>pv;
  bool used,notuse;
  int type;
  Data(){pv.clear();used = true;type = 0;notuse = false;};
  void check(){
    sort(pv.begin(),pv.end());
    for(int i = 0 ; i < 4 ; i++){
      P np = P(pv[0].first + dy[i],pv[0].second + dx[i]);
      if(!(0 <= np.first && np.first < H && 0 <= np.second && np.second < W))continue;
      if(pv[1] == np){
	notuse = true;
	return;
      }
    }
    if(pv[0].first == pv[1].first)type = TYPEY;
    else if(pv[0].second == pv[1].second)type = TYPEX;
    else type = ELSE;
  }
};

Data data[26];

void init(){
  for(int i = 0 ; i < 26 ; i++)data[i] = Data();
}

void input(){
  cin >> H >> W;
  for(int i = 0 ; i < H ; i++){
    for(int j = 0 ; j < W ; j++){
      char c;
      cin >> c;
      if(c == '.')continue;
      data[c-'A'].pv.push_back(P(i,j));
      data[c-'A'].used = false;
    }
  }
  for(int i = 0 ; i < 26 ; i++){
    if(!data[i].used)data[i].check();
  }

  /*
  for(int i = 0 ; i < 26 ; i++){
    cout << "i = " << (char)(i + 'A') << " used = " << data[i].used << endl;
    if(data[i].used)continue;
    cout << "p0 = " << data[i].pv[0].first << ' ' << data[i].pv[0].second 
	 << "p1 = " << data[i].pv[1].first << ' ' << data[i].pv[1].second << endl;
  }
  */
}

int run(int res){
  for(int i = 0 ; i < 26 ; i++){
    if(data[i].notuse)continue;
    if(data[i].used)continue;
    bool f = false;
    bool f1,f2;
    f1 = f2 = false;

    P p0,p1,p2;
    p0 = data[i].pv[0];
    p1 = data[i].pv[1];

    

    if(data[i].type == TYPEX){
      for(int j = 0 ; j < 26 ; j++){
	if(f)break;
	if(j == i)continue;
	if(data[j].used)continue;
	for(int k = 0 ; k < 2 ; k++){

	  /*
	  if(i == 1 && j == 3){
	    cout << "p0.first = " << p0.first << " p2.first = " << p2.first << 
	      "p1.first = " << p1.first << endl;
	  }
	  */
	  p2 = data[j].pv[k];
	  if(p0.second != p2.second)continue;
	  if(p0.first <= p2.first && p2.first <= p1.first){
	    f = true;
	    break;
	  }
	}
      }
    }
    else if(data[i].type == TYPEY){
      for(int j = 0 ; j < 26 ; j++){
	if(f)break;
	if(j == i)continue;
	if(data[j].used)continue;
	for(int k = 0 ; k < 2 ; k++){
	  p2 = data[j].pv[k];
	  if(p0.first != p2.first)continue;
	  if(p0.second <= p2.second && p2.second <= p1.second){
	    f = true;
	    break;
	  }
	}
      }
    }
    else {
      for(int j = 0 ; j < 26 ; j++){
	if(f)break;
	if(j == i)continue;	
	if(data[j].used)continue;

	for(int k = 0 ; k < 2 ; k++){
	  p2 = data[j].pv[k];
	  int x1,x2,y1,y2;
	  if(p0.second < p1.second){
	    
	    /*
	    cout << (char)(i + 'A') << endl;
	    cout << "p0.first = " << p0.first << ' ' << " p1.first = " << p1.first << endl;
	    */

	    x1 = p0.second;
	    y1 = p0.first;
	    x2 = p1.second;
	    y2 = p1.first;
	    
	    if(p2.second == x1){
	      if(y1 <= p2.first && p2.first <= y2)f1 = true;
	    }
	    
	    if(p2.first == y1){
	      if(x1 <= p2.second && p2.second <= x2)f2 = true;
	    }
	    
	    if(p2.second == x2){
	      if(y1 <= p2.first && p2.first <= y2)f2 = true;
	    }

	    if(p2.first == y2){
	      if(x1 <= p2.second && p2.second <= x2)f1 = true;
	    }

	  }
	  else{

	    //cout << (char)(i + 'A') << endl;
	    //cout << "p0.first = " << p0.first << ' ' << " p1.first = " << p1.first << endl;

	    x1 = p1.second;
	    y1 = p0.first;
	    x2 = p0.second;
	    y2 = p1.first;

	    if(p2.second == x1){
	      if(y1 <= p2.first && p2.first <= y2)f1 = true;
	    }
	    
	    if(p2.first == y1){
	      if(x1 <= p2.second && p2.second <= x2)f1 = true;
	    }
	    
	    if(p2.second == x2){
	      if(y1 <= p2.first && p2.first <= y2)f2 = true;
	    }

	    if(p2.first == y2){
	      if(x1 <= p2.second && p2.second <= x2)f2 = true;
	    }
	  }
	}
      }

      if(f1 && f2){
	f = true;
      }
    }
    if(f)continue;
    //cout << "del = " << (char)(i + 'A') << endl;//
    data[i].used = true;
    return run(res+2);
  }
  return res;
}

int main(){
  init();
  input();
  cout << run(0) << endl;
  return 0;
}

Measured memory_bytes: 1200