#include<bits/stdc++.h>
#define int long long
using namespace std;
int pre[200005];
int suf[200005];
priority_queue<int,vector<int>,greater<int>>pqr;
priority_queue<int>pql;
int cans=0;
int inf=1e18;
void push(int x){
if(!pqr.empty()&&x>pqr.top()){
cans+=abs(x-pqr.top());
pqr.push(x);
pqr.push(x);
pql.push(pqr.top());
pqr.pop();
}else if(!pql.empty()&&x<pql.top()){
cans+=abs(x-pql.top());
pql.push(x);
pql.push(x);
pqr.push(pql.top());
pql.pop();
}else{
pql.push(x);
pqr.push(x);
}
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int k,n;cin>>k>>n;
int ans=0;
vector<pair<int,int>>v;
for(int i=1;i<=n;i++){
char a,c;
int b,d;
cin>>a>>b>>c>>d;
if(a==c){
ans+=abs(b-d);
}else{
ans++;
v.push_back({b,d});
}
}
sort(v.begin(),v.end());
for(int i=1;i<=v.size();i++){
auto x=v[i-1];
push(x.first);
push(x.second);
pre[i]=cans;
}
while(!pql.empty())pql.pop();
while(!pqr.empty())pqr.pop();
cans=0;
for(int i=v.size();i>=1;i--){
auto x=v[i-1];
push(x.first);
push(x.second);
suf[i]=cans;
}
//cerr<<"work\n";
if(k==1){
cout<<cans+ans<<"\n";
}else{
int tans=inf;
for(int i=1;i<v.size();i++){
tans=min(tans,pre[i]+suf[i+1]);
}
if(v.size()<=1)tans=0;
cout<<ans+tans<<"\n";
}
}