def generateResult(N, M, commands):
from collections import deque
robots = deque(range(1, N+1))
pos = {i: i-1 for i in range(1, N+1)}
for cmd in commands:
parts = cmd.split()
typ, x, y = parts[0], int(parts[1]), int(parts[2])
robots.remove(x)
idx = robots.index(y)
if typ == 'A':
robots.insert(idx, x)
else:
robots.insert(idx+1, x)
# Map current order to original positions
final_positions = [robot for robot in robots]
target_indices = [final_positions.index(i+1) for i in range(N)]
# Find LIS
import bisect
lis = []
for x in target_indices:
idx = bisect.bisect_left(lis, x)
if idx == len(lis):
lis.append(x)
else:
lis[idx] = x
return N - len(lis)
def main():
import sys
input = sys.stdin.read
data = input().strip().split('\n')
N, M = map(int, data[0].split())
commands = data[1:]
print(generateResult(N, M, commands))
main()
ZGVmIGdlbmVyYXRlUmVzdWx0KE4sIE0sIGNvbW1hbmRzKToKICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCgogICAgcm9ib3RzID0gZGVxdWUocmFuZ2UoMSwgTisxKSkKICAgIHBvcyA9IHtpOiBpLTEgZm9yIGkgaW4gcmFuZ2UoMSwgTisxKX0KCiAgICBmb3IgY21kIGluIGNvbW1hbmRzOgogICAgICAgIHBhcnRzID0gY21kLnNwbGl0KCkKICAgICAgICB0eXAsIHgsIHkgPSBwYXJ0c1swXSwgaW50KHBhcnRzWzFdKSwgaW50KHBhcnRzWzJdKQogICAgICAgIHJvYm90cy5yZW1vdmUoeCkKICAgICAgICBpZHggPSByb2JvdHMuaW5kZXgoeSkKICAgICAgICBpZiB0eXAgPT0gJ0EnOgogICAgICAgICAgICByb2JvdHMuaW5zZXJ0KGlkeCwgeCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByb2JvdHMuaW5zZXJ0KGlkeCsxLCB4KQoKICAgICMgTWFwIGN1cnJlbnQgb3JkZXIgdG8gb3JpZ2luYWwgcG9zaXRpb25zCiAgICBmaW5hbF9wb3NpdGlvbnMgPSBbcm9ib3QgZm9yIHJvYm90IGluIHJvYm90c10KICAgIHRhcmdldF9pbmRpY2VzID0gW2ZpbmFsX3Bvc2l0aW9ucy5pbmRleChpKzEpIGZvciBpIGluIHJhbmdlKE4pXQoKICAgICMgRmluZCBMSVMKICAgIGltcG9ydCBiaXNlY3QKICAgIGxpcyA9IFtdCiAgICBmb3IgeCBpbiB0YXJnZXRfaW5kaWNlczoKICAgICAgICBpZHggPSBiaXNlY3QuYmlzZWN0X2xlZnQobGlzLCB4KQogICAgICAgIGlmIGlkeCA9PSBsZW4obGlzKToKICAgICAgICAgICAgbGlzLmFwcGVuZCh4KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxpc1tpZHhdID0geAoKICAgIHJldHVybiBOIC0gbGVuKGxpcykKCmRlZiBtYWluKCk6CiAgICBpbXBvcnQgc3lzCiAgICBpbnB1dCA9IHN5cy5zdGRpbi5yZWFkCiAgICBkYXRhID0gaW5wdXQoKS5zdHJpcCgpLnNwbGl0KCdcbicpCiAgICBOLCBNID0gbWFwKGludCwgZGF0YVswXS5zcGxpdCgpKQogICAgY29tbWFuZHMgPSBkYXRhWzE6XQogICAgcHJpbnQoZ2VuZXJhdGVSZXN1bHQoTiwgTSwgY29tbWFuZHMpKQoKbWFpbigpCg==