#P16636. [Ukiepc2020]Lost Map

[Ukiepc2020]Lost Map

题目描述

一位业余维京历史学家正在寻找《埃吉尔萨迦》中埃吉尔·斯卡拉格里姆松留下的白银。她找到了两张古老的藏宝图,据说这两张地图能够指引人们找到宝藏。

一张藏宝图由一系列指令组成,每条指令的形式为:

方向 步数

其中方向只能是:

  • n:北;
  • s:南;
  • e:东;
  • w:西。

由于地图年代久远,一些指令已经无法辨认。无法辨认的指令使用一个问号 ? 表示。

第一张地图较长,第二张地图是一段较短的碎片。她希望把第二张地图覆盖在第一张地图的某个连续位置上,使两张地图能够相互吻合。

对于两张地图中相互对应的两条指令,如果满足以下至少一个条件,则认为它们兼容:

  • 两条指令完全相同;
  • 至少有一条指令为 ?

覆盖时,第二张地图中的每条指令都必须与第一张地图中的一条指令对应,即第二张地图不能超出第一张地图的范围。

请计算第二张地图有多少种合法的覆盖位置。

输入格式

第一行包含两个整数 nnmm,分别表示第一张地图和第二张地图的指令数量,并满足:

1m<n4105.1\le m<n\le 4\cdot 10^5.

接下来 nn 行描述第一张地图。每行具有以下两种格式之一:

?

方向 步数

其中方向为 nsew 之一,步数 ss 满足:

1s7.1\le s\le 7.

再接下来 mm 行以相同格式描述第二张地图。

输出格式

输出一个整数,表示第二张地图可以覆盖在第一张地图上的合法位置数量。

样例 1

输入

4 3
n 4
e 1
?
s 5
?
e 1
?

输出

2

样例 2

输入

4 3
n 4
e 1
w 3
s 5
?
e 1
?

输出

1