#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(void){
ios::sync_with_stdio(0); cin.tie(0);
ll k,n,i,j;
cin>>k>>n;
vector<ll> s(n),t(n);
vector<char> p(n),q(n);
ll ans=0,val=1e18,cnt=0;
for(i=0 ; i<n ; i++){
cin>>p[i]>>s[i]>>q[i]>>t[i];
if(p[i]==q[i]){
cnt++;
ans+=abs(s[i]-t[i]);
continue;
}
}
if(cnt==n){
cout<<ans<<"\n";
return 0;
}
if(k==1){
vector<vector<ll>> pos;
map<ll,ll> mp,mp1;
for(i=0 ; i<n ; i++){
if(p[i]==q[i]) continue;
pos.push_back({s[i],i,0});
pos.push_back({t[i],i,1});
mp[s[i]]++;
mp[t[i]]++;
}
ll x=0,y,last=0;
for(auto v:mp){
y=v.second;
if(x!=0) mp1[v.first]=x;
if(x!=0) mp[v.first]=v.first-last;
x+=y;
last=v.first;
}
sort(pos.begin(),pos.end());
ll valtmp=0,brpos;
if(pos.size()) brpos=pos[0][0];
for(auto v:pos){
if(v[2]==0) valtmp+=abs(brpos-v[0])+abs(brpos-t[v[1]])+1;
}
val=min(val,valtmp);
for(auto v:mp1){
valtmp+=v.second*mp[v.first];
valtmp-=(pos.size()-v.second)*mp[v.first];
val=min(val,valtmp);
}
ans+=val;
cout<<ans<<"\n";
}
else{
ll sz=0;
map<ll,ll> mp1,mp2,mp;
for(i=0 ; i<n ; i++){
if(p[i]==q[i]) continue;
mp1[s[i]]++;
mp1[t[i]]++;
sz+=2;
}
cnt=0;
for(auto v:mp1) mp[cnt++]=v.first;
vector<ll> pre,suff;
ll x=0,y=0;
for(auto v:mp1){
pre.push_back(x);
suff.push_back(sz-x);
x+=v.second;
}
ll p1=0,p2,val=1e18;
for(i=1 ; i<pre.size()-1 ; i++){
ll valtmp=0;
for(j=0 ; j<n ; j++){
if(p[j]==q[j]) continue;
valtmp+=min(abs(mp[0]-t[j])+abs(mp[0]-s[j]),abs(mp[i]-t[j])+abs(mp[i]-s[j]))+1;
}
if(valtmp<val){
p2=i;
val=valtmp;
}
}
sz=pre.size();
while(p1<sz-2){
p1++;
ll valtmp=0;
for(j=0 ; j<n ; j++){
if(p[j]==q[j]) continue;
valtmp+=min(abs(mp[p1]-t[j])+abs(mp[p1]-s[j]),abs(mp[p2]-t[j])+abs(mp[p2]-s[j]))+1;
}
val=min(val,valtmp);
while(p2<sz-1){
p2++;
ll valtmp=0;
for(j=0 ; j<n ; j++){
if(p[j]==q[j]) continue;
valtmp+=min(abs(mp[p1]-t[j])+abs(mp[p1]-s[j]),abs(mp[p2]-t[j])+abs(mp[p2]-s[j]))+1;
}
if(val<valtmp){
p2--;
break;
}
val=min(val,valtmp);
}
}
ans+=val;
cout<<ans<<"\n";
}
return 0;
}