bzoj#P2921. [Poi1998]Assembler circuits

[Poi1998]Assembler circuits

题目描述

Bytetel 公司想改进它们生产的计算机,它们想用一些特殊的汇编电路门系统来替代汇编程序。汇编程序由许多单独的任务组成,每个任务有四个元素:

  • 两个寄存器作为输入;
  • 一个运算符;
  • 一个寄存器作为输出。

我们假设最多有 2626 个寄存器,分别用小写字母 aza\sim z 表示。此外有四种运算,用大写字母 A,B,C,DA,B,C,D 表示。

一个汇编电路包括:

  • 输入端映射到寄存器,该寄存器的初值作为电路的输入;
  • 输出端同样映射到寄存器,电路的输出作为给寄存器的值。

一个电路由许多门组成,每个门包括两个输入和一个输出,它将输入的值进行一个基本运算,并将结果输出。门的输入和整个电路的输出要么与其它门的输出端相连,要么和整个电路的输出端相连。门的输出和整个电路的输入要么与其它门的输入端相连,要么和整个电路的输出端相连。电路门之间不会形成回路。

如果一个电路门系统和一个汇编程序对于任意的输入,它们的输出都相同,那么我们就称它们是等效的。

你需要编写一个程序,计算最少要几个门可以组成与汇编程序等效的电路系统。

输入格式

第一行包含一个整数 nn,表示汇编程序的指令数。以后 nn 行每行包含 44 个字母表示一条指令,第一个字母为 A,B,C,DA,B,C,D 中的一个,表示操作的类型,第二和第三个字母为小写字母,表示输入的寄存器,第四个字母也是小写字母,表示输出的寄存器。

输出格式

包含一个整数,表示与给汇编程序等效的电路门系统中最少需要几个电路门。

8
Afbc
Bfbd
Cddd
Bcbc
Afcc
AfbfCfbb
Dfdb
6

数据规模与约定

对于 100%100\% 的数据,1n1031\le n\le 10^3