#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int K, N, s, t, ans = LLONG_MAX, o = 0; cin >> K >> N;
char p, q;
vector<pair<int, int>> pairs;
vector<pair<int, int>> sums;
for (int i = 0; i < N; i++) {
cin >> p >> s >> q >> t;
pairs.push_back({ min(s, t), max(s, t) });
if (p != q) {
sums.push_back({ s + t, i });
o++;
}
else o += abs(s - t);
}
if (pairs.empty()) {
cout << o << '\n';
return 0;
}
sort(sums.begin(), sums.end());
vector<int> ansb(sums.size() + 1, 0), anse(sums.size() + 1, 0);
priority_queue<int> pq1;
priority_queue<int, vector<int>, greater<int>> pq2;
int prev = LLONG_MIN, crnt = 0;
for (int i = 0; i < sums.size(); i++) {
pq2.push(pairs[sums[i].second].first);
pq1.push(pq2.top());
pq2.pop();
pq1.push(pairs[sums[i].second].second);
pq2.push(pq1.top());
pq1.pop();
if (pq1.top() < prev) crnt += 2 * (prev - pq1.top());
prev = pq1.top();
crnt += abs(pq1.top() - pairs[sums[i].second].first) + abs(pq1.top() - pairs[sums[i].second].second);
ansb[i + 1] = crnt;
}
prev = LLONG_MIN, crnt = 0;
while (pq1.size()) pq1.pop();
while (pq2.size()) pq2.pop();
for (int i = sums.size() - 1; i >= 0; i--) {
pq2.push(pairs[sums[i].second].first);
pq1.push(pq2.top());
pq2.pop();
pq1.push(pairs[sums[i].second].second);
pq2.push(pq1.top());
pq1.pop();
if (pq1.top() < prev) crnt += 2 * (prev - pq1.top());
prev = pq1.top();
crnt += abs(pq1.top() - pairs[sums[i].second].first) + abs(pq1.top() - pairs[sums[i].second].second);
anse[i] = crnt;
}
if (K == 1) cout << ansb.back() + o << '\n';
else {
for (int i = 0; i <= sums.size(); i++) ans = min(ans, ansb[i] + anse[i]);
cout << ans + o << '\n';
}
}