P2246 SAC#1 - Hello World(升级版)

题目背景

一天,智障的 pipapi 正在看某辣鸡讲义学程序设计。

题目描述

在讲义的某一面,他看见了一篇文章。这篇文章由英文字母(大小写均有)、数字、和空白字符(制表/空格/回车)构成。 pipapi 想起了他最近刚刚学会写的 `Hello World` 程序。他非常好奇,这篇文章中,`Hello World` 作为子序列到底出现过多少次呢?(**忽略大小写和空格**) 两个子序列相同当且仅当它们每一个字符所在的位置都相同。 由于答案可能很大,请输出答案对 ${10}^9+7$ 取模的余数。

输入格式

输入包含若干行,这些行的内容共同构成一篇文章。 文章以 `EOF`(文件结尾)结束。

输出格式

输出仅包含一个整数,表示这篇文章中 `Hello World` 出现的次数。

说明/提示

记 $n$ 为输入的文章的长度(字符数)。 对于 $20\%$ 的数据,$n \le 20$。 对于 $50\%$ 的数据,$n \le 500$。 对于所有的数据,$15 \le n \le 500000$。