CF1263D.Secret Passwords

传统题 时间 2000 ms 内存 256 MiB 8 尝试 25 已通过 8 标签

Secret Passwords

题目描述

一名未知的黑客想要获取 AtForces 测试系统管理员的密码,以便提前获得下一场比赛的题目。为此,他潜入了管理员的办公室,偷走了一张写有 nn 个密码的纸条——这些密码都是由小写拉丁字母组成的字符串。

黑客回家后开始准备入侵 AtForces。他发现系统中只包含被盗名单上的密码,并且系统判断两个密码 aabb 是否等价的规则如下:

  • 如果存在某个字母同时出现在 aabb 中,则密码 aabb 等价;
  • 如果存在名单中的某个密码 cc,使得 cc 分别与 aabb 都等价,则 aabb 也等价。

如果系统设置了某个密码,而用户使用了与之等价的密码进行登录,则用户可以成功进入系统。

例如,若名单中包含密码 "a"、"b"、"ab"、"d",则 "a"、"b"、"ab" 彼此等价,但 "d" 与名单中的其他密码都不等价。换句话说,如果:

  • 管理员密码是 "b",则可以用 "a"、"b" 或 "ab" 这三个密码中的任意一个进入系统;
  • 管理员密码是 "d",则只能用 "d" 进入系统。

系统中只有一个密码是管理员密码。请帮助黑客计算,为了保证能够进入系统,至少需要尝试多少个密码。注意,黑客并不知道系统设置的是哪一个密码。

输入格式

第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5),表示密码数量。接下来的 nn 行,每行一个密码 sis_i,每个密码为非空字符串,长度不超过 5050。有些密码可能相同。

保证所有密码的总长度不超过 10610^6。所有密码仅由小写拉丁字母组成。

输出格式

输出一个整数,表示为了保证能够进入系统,至少需要尝试的密码数量。

说明/提示

在第二个样例中,黑客需要尝试所有密码才能进入系统。

由 ChatGPT 4.1 翻译

样例

4
a
b
ab
d
2
3
ab
bc
abc
1
1
codeforces
1

在线编程 IDE

建议全屏模式获得最佳体验