#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<array<int,2>> vec;
signed main(){
cin.tie(0)->ios::sync_with_stdio(0);
int k,n;
cin>>k>>n;
int ans=0;
for(int i=1;i<=n;i++){
string p,q;
int a,b;
cin>>p>>a>>q>>b;
if(p==q){
ans+=abs(a-b);
}
else{
ans+=abs(a-b)+1;
vec.push_back({min(a,b),max(a,b)});
}
}
sort(vec.begin(),vec.end());
if(k==1){
int back=0,front=0,bn=0,fn=0;
int ans2=LLONG_MAX;
for(auto[a,b]:vec) front+=a,fn++;
vector<array<int,2>> operate;
for(auto[a,b]:vec){
operate.push_back({b,-1});
if(a!=0) operate.push_back({a-1,-1});
operate.push_back({a,0});
if(b!=1000000000) operate.push_back({b+1,1});
}
sort(operate.begin(),operate.end());
for(int i=0,j=0;i<operate.size();i=j){
int pos=operate[i][0],t=operate[i][1];
while(j<operate.size()&&operate[i][0]==operate[j][0]){
int pos2=operate[j][0],t2=operate[j][1];
if(t2==0){
fn--;
front-=pos2;
}
if(t2==1){
bn++;
back+=pos2-1;
}
j++;
}
// cout<<pos<<' '<<front<<' '<<back<<"\n";
ans2=min(ans2,front-fn*pos+bn*pos-back);
// cout<<front-fn*pos+bn*pos-back<<"\n";
}
cout<<ans+ans2*2;
return 0;
}
cout<<-1;
}