2086: 源代码 Source Code

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:7 解决:7

题目描述

    crazygirl拯救了大部分的双城人,双城人民表示很感激,于是决定告知crazygirl有关Crazy Land的秘密。原来,Crazy Land是源代码计划中的一部分,它只存在于crazygirl的脑海中。如果crazygirl想要出去,必须完成一个特殊的任务――抄代码!!

    你眼前出现了三个屏幕,第一个屏幕上有一个奇怪程序

    这一个程序有很多行,是用Crazy Lang写成的

    Crazy Lang的语法如下

    1.一个普通语句占一行

    2.一对大括号分别占一行,表示一层嵌套的程序

    3.同一层程序中的普通语句顺序可以互换

    4.对于每一层程序,在两个大括号之间有若干行,先写完所有普通语句,才可以写嵌套的程序,且每层程序最多只会嵌套一个程序

{

a

{

b

}

c

} 普通语句未写完就写嵌套了

{

a

{

b

}

{

c

}

} 一层程序嵌套了多个程序

    例如               而这些                    则是不合法的

{

a = 0;

b = 1;

{

c = a + b;

}

}

 

    抄写时,可以把一块屏幕的最下面一条语句抄到另一块屏幕的最下面,并且将这条语句从原来的地方擦掉。大括号可以任意擦除或写入。

    现在需要从第一个屏幕将程序抄到第三个屏幕上。

    crazygirl表示她认为梦做得够久了,于是希望尽早完成,请求出最小的抄写次数。

输入

    输入有若干行字符,表示这个程序,保证给出的程序合法

输出

    一行一个整数表示最小抄写次数模109+7

    注意大括号的抄写不算入答案且抄写过程中也必须保证程序合法

样例输入 复制

{
a = 0;
 b = 1;
{
c = a + b;
}
}

样例输出 复制

4

提示

【数据规模】

    对于10%的数据行数小于20且嵌套层数不超过3

    对于30%的数据行数小于1000且嵌套层数不超过20

    对于100%的数据行数小于100000且嵌套层数不超过1000

 

数据保证

    1.每行长度不超过20

    2.每层程序至少有一句普通语句

    3.除了最内层程序,每层程序均恰有一个嵌套程序

    4.所有大括号严格对应,且文件以{开始,以}结束

    5.大括号前后不会有空格

    6.你不必管语句内容,同一层的普通语句一定可以互换。

 

Hints

    样例解释

    第零步,无视所有的大括号(反正可以抄完了再加)

    第一步,把c = a + b;抄到第二块屏幕上

    第二步,把b = 1;抄到第三块屏幕上

    第三步,把a = 0;抄到第三块屏幕上

    第四步,把c = a + b;抄到第三块屏幕上

    最终步,补上大括号

    由于大括号的擦除和写入不算入抄写次数,因此是4