#include <bits/stdc++.h>
#define int long long
#define fi first
#define se second
using namespace std;
int ans, n, a[100010], l, k, u, v, kk[200010], len, s1, s2;
pair <int,int> f[100010], h[100010];
pair<int,pair<int,int> > mid[100010];
char b, c;
priority_queue <int> q;
priority_queue <int, vector<int>, greater<int> > p;
signed main()
{
ios::sync_with_stdio(false);
cin >> k >> n;
for (int i = 1; i <= n; i++)
{
cin >> b >> u >> c >> v;
if (b == c)
ans += abs(u - v);
else
{
a[++l] = abs(u - v);
kk[++len] = u;
kk[++len] = v;
mid[l].fi = (u + v) >> 1;
mid[l].se.fi = u;
mid[l].se.se = v;
}
}
if (k == 1)
{
sort(kk + 1, kk + 1 + len);
int dis = (kk[len >> 1] + kk[(len >> 1) + 1]) >> 1;
for (int i = 1; i <= len; i++)
ans += abs(dis - kk[i]);
printf("%lld", ans + len / 2);
}
else
{
sort(mid + 1, mid + 1 + l);
if (l == 1)
{
printf("%d", ans + abs(kk[1] - kk[2]) + 1);
return 0;
}
s1 = s2 = 0;
for (int i = 1; i <= l; i++)
{
q.push(mid[i].se.fi);
q.push(mid[i].se.se);
p.push(q.top());
q.pop();
if (q.top() > p.top())
{
int xx = q.top(), yy = p.top();
q.pop(), p.pop();
q.push(yy);
p.push(xx);
}
s1 += mid[i].se.fi + mid[i].se.se;
s1 -= p.top();
s2 += p.top();
h[i].fi = s2 - s1;
}
while(!q.empty())
q.pop();
while(!p.empty())
p.pop();
s1 = s2 = 0;
for (int i = l; i > 0; i--)
{
q.push(mid[i].se.fi);
q.push(mid[i].se.se);
p.push(q.top());
q.pop();
if (q.top() > p.top())
{
int xx = q.top(), yy = p.top();
q.pop(), p.pop();
q.push(yy);
p.push(xx);
}
s1 += mid[i].se.fi + mid[i].se.se;
s1 -= p.top();
s2 += p.top();
h[i].se = s2 - s1;
}
int lll = LONG_LONG_MAX;
for (int i = 1; i <= l + 1; i++)
{
lll = min(h[i - 1].fi + h[i].se, lll);
}
printf("%lld", ans + lll + l);
}
}