Mirko ha recibido un regalo de compleaños de su tío en los Estados Unidos – una lista doblemente enlazada (como se muestra en la figura) con los números del 1 al N en orden creciente.
Mirko realiza dos tipos de movimientos en su nueva lista:
Mirko ha estado jugando durante horas con su nueva lista, escribiendo en un trozo de papel todos los movimientos que hace. Al acabar, intenta volver a dejar la lista como estaba, deshaciendo sus movimientos. Pero descubre sorprendido que la información que se había guardado no es suficiente para deshacer los movimientos que ha hecho: para cada movimiento, sabe que un nodo acaba de ser puesto detrás (o delante) de otro, pero no sabe dónde estaba antes del movimiento.
Ya que Mirko no puede deshacer todos los pasos que ha hecho, al menos sí puede dejar la lista tal y como estaba. Conociendo los movimientos de Mirko, haz un programa que calcule cuál es el mínimo número de movimientos que es necesario para dejar la lista tal y como estaba.
Entrada
La primera línea contiene dos enteros, N y K (2≤ N≤ 500000, 0≤ M≤ 100000), con el número de nodos y el número de movimientos que ha hecho Mirko.
Cada una de las siguientes M líneas contiene la descripción de un movimiento de Mirko: el tipo (“A” o “B”) y dos enteros X e Y.
Salida
Escribe una línea con el mínimo número de movimientos.
Input
2 1 A 2 1
Output
1
Input
4 3 B 1 2 A 4 3 B 1 4
Output
2
Input
6 5 A 1 4 B 2 5 B 4 2 B 6 3 A 3 5
Output
3