#include <bits/stdc++.h>
using namespace std;
const int N = 25;
int a[N * N][N], n, go[N * N][N * N];
int main() {
	int m;
	scanf("%d%d", &n, &m);
	memset(go, -1, sizeof(go));
	for (int i = 0; i < m; ++ i) {
		for (int j = 0; j < n; ++ j) {
			static char s[20];
			scanf("%s", s);
			if (s[0] == 'X') {
				a[i][j] = -1;
			}
			else {
				sscanf(s, "%d", &a[i][j]);
			}
		}
	}
	int ans = 0;
	for (int k = 0; k < n; ++ k) {
		vector<pair<int, int>> all;
		for (int i = 0; i < m; ++ i) if (a[i][k] != -1) all.push_back({a[i][k], i});
		sort(all.begin(), all.end(), greater<pair<int, int>>());
		for (int i = 0; i < (int) all.size() - 1; ++ i) {
			go[all[i].second][all[i + 1].second] = all[i].first - all[i + 1].first;
		}
	}
	int at = 0;
	do {
		bool flag = 0;
		for (int i = 0; i < m; ++ i) if (go[at][i] != -1) {
			ans += go[at][i];
			at = i;
			flag = 1;
			break;
		}
		if (!flag) at = 0, ans = -1;
	} while (at);
	printf("%d\n", ans);
}