马里奥准备为新游戏搭建全新的关卡,他开着崭新的围墙建造车在平面直角坐标系中,以 (0,0) 点为起点,到处乱跑。他每行驶一个单位的距离就会在身后留下一个单位长度的围墙。
比如,他从 (0,0) 点出发,向上行驶一个单位的距离,就会在 (0,0) 到 (0,1) 间留下一段一个单位长度的围墙。已知马里奥只会沿着上、下、左、右四个方向行驶。
马里奥的驾驶技术稀烂,可能会重复到达已经修建了围墙的位置,所幸围墙建造车非常智能,不会撞毁已经修建好的围墙,甚至可以穿越已经修好的围墙,使围墙形成交叉点。
由于缺少提前设计,一天工作结束,马里奥发现围墙把一些区域完全封闭了起来,为了后续安装更多的游戏道具,马里奥需要在围墙上开启一些一个单位宽度的通道,使得所有区域可被到达。
因为快下班了,马里奥赶时间,所以请你帮他计算一下最少需要开设多少个通道才能保证所有区域可达。
第一行一个整数 N。
第二行包含一个长度为 N 的字符串,表达了马里奥每个单位时间行驶的方向。数据保证只会出现 L,U,R,D 四种字符,分别表示 左,上,右,下 四个方向。
输出一个整数,表示马里奥最小需要开启通道的数量。
6 URDLLL
1
15 UUURRDDLLLDRRRD
2
10 RRRDLLLLUU
0
马里奥建造围墙的示意图如下(S 表示出发点,o 表示马里奥到达的每个点,| - 表示一个单位长度的围墙),因此只需要开 1 个通道。
o-o
| |
o-o-S-o
对于 10\% 的数据,满足字符串中,仅包含 D 和 L 两种字符。
对于 100\% 的数据,满足 1\le N \le 1000。