#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
//freopen("1.in","r",stdin);
int k,n;
cin >> k >> n;
int ans=0;
vector<int> coord;
coord.reserve(2*n);
vector<pair<int,int>> vp;
vp.reserve(n);
for (int i=0;i<n;i++) {
char c1,c2;
int x,y;
cin >> c1 >> x >> c2 >> y;
if (c1==c2) ans+=abs(x-y);
else {
vp.push_back({x,y});
coord.push_back(x);
coord.push_back(y);
}
}
sort(coord.begin(),coord.end());
coord.erase(unique(coord.begin(),coord.end()),coord.end());
vector<int> mp(coord.size()+1,0);
for (auto [x,y]:vp) {
int idx1=lower_bound(coord.begin(),coord.end(),x)-coord.begin();
int idx2=lower_bound(coord.begin(),coord.end(),y)-coord.begin();
mp[idx1]++;
mp[idx2+1]--;
}
vector<int> diff(coord.size()+1,0);
for (int i=0;i<coord.size()+1;i++) {
diff[i]=mp[i];
if (i>0) diff[i]+=diff[i-1];
}
int max_diff=0, max_diff_idx=0;
for (int i=0;i<coord.size()+1;i++) {
if (diff[i]>max_diff) {
max_diff=diff[i];
max_diff_idx=i;
}
}
int mark=coord[max_diff_idx];
for (auto [x,y]:vp) {
int idx1=lower_bound(coord.begin(),coord.end(),x)-coord.begin();
int idx2=lower_bound(coord.begin(),coord.end(),y)-coord.begin();
if (x<=max_diff_idx && y>=max_diff_idx) ans+=abs(x-y);
else ans+=abs(x-mark)+abs(y-mark);
}
cout<<ans<<"\n";
return 0;
}