#include "bits/stdc++.h"

#define REP(i,n) for(ll i=0;i<ll(n);++i)
#define RREP(i,n) for(ll i=ll(n)-1;i>=0;--i)
#define FOR(i,m,n) for(ll i=m;i<ll(n);++i)
#define RFOR(i,m,n) for(ll i=ll(n)-1;i>=ll(m);--i)
#define ALL(v) (v).begin(),(v).end()
#define UNIQUE(v) v.erase(unique(ALL(v)),v.end());
#define INF 1000000001ll
#define MOD 1000000007ll
#define EPS 1e-9

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


using namespace std;

using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
using vvi = vector<vi>;
using vvl = vector<vl>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

template <class T> bool chmin(T& a, const T& b) { if (a > b) { a = b; return true; } return false; }
template <class T> bool chmax(T& a, const T& b) { if (a < b) { a = b; return true; } return false; }

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
	int n, m;
	cin >> n >> m;
	vector<string> v(n);
	REP(i, n)cin >> v[i];
	vector <vector<pii>> pos(26);
	REP(i, n)REP(j, m) {
		if (isalpha(v[i][j])) {
			pos[v[i][j] - 'A'].push_back({ i,j });
		}
	}

	vi b(26, 0);
	auto f = [&](int x, int y) {
		return v[x][y] != '.' && b[v[x][y] - 'A'] == 0;
	};
	int cnt = 0;
	while (1) {
		bool updated = false;
		REP(i, 26) {
			if (b[i] || pos[i].empty())continue;
			int x1 = pos[i][0].first, y1 = pos[i][0].second,
				x2 = pos[i][1].first, y2 = pos[i][1].second;
			bool ok = true;
			if (x1 == x2) {
				if (abs(y1 - y2) == 1)continue;

				FOR(i, min(y1, y2) + 1, max(y1, y2)) {
					if (f(x1, i))ok = false;
				}
			}
			else if (y1 == y2) {
				if (abs(x1 - x2) == 1)continue;
				FOR(i, min(x1, x2) + 1, max(x1, x2)) {
					if (f(i, y1))ok = false;
				}
			}
			else {
				if (x1 > x2) {
					swap(x1, x2);
					swap(y1, y2);
				}
				ok = false;
				bool flag = true;
				FOR(i, x1 + 1, x2) {
					if (f(i, y1))flag = false;
				}
				FOR(i, min(y1, y2) + 1, max(y1, y2)) {
					if (f(x2, i))flag = false;
				}
				if (f(x2, y1))flag = false;
				if (flag)ok = true;
				flag = true;
				FOR(i, x1 + 1, x2) {
					if (f(i, y2))flag = false;
				}
				FOR(i, min(y1, y2) + 1, max(y1, y2)) {
					if (f(x1, i))flag = false;
				}
				if (f(x1, y2))flag = false;
				if (flag)ok = true;

			}
			if (ok) {
				updated = true;
				b[i] = 1;
				cnt++;
			}
		}
		if (!updated)break;

	}
	cout << 2 * cnt << endl;
}
