{"trustable":true,"prependHtml":"\u003cscript\u003e window.katexOptions \u003d { disable: true }; \u003c/script\u003e\n\u003cscript type\u003d\"text/x-mathjax-config\"\u003e\n MathJax.Hub.Config({\n tex2jax: {\n inlineMath: [[\u0027$$$\u0027,\u0027$$$\u0027], [\u0027$\u0027,\u0027$\u0027]],\n displayMath: [[\u0027$$$$$$\u0027,\u0027$$$$$$\u0027], [\u0027$$\u0027,\u0027$$\u0027]]\n }\n });\n\u003c/script\u003e\n\u003cscript async src\u003d\"https://mathjax.codeforces.org/MathJax.js?config\u003dTeX-AMS-MML_HTMLorMML\" type\u003d\"text/javascript\"\u003e\u003c/script\u003e","sections":[{"title":"","value":{"format":"HTML","content":"\u003cdiv class\u003d\"panel_content\"\u003e21世纪是一个生物技术发展的世纪。我们知道基因是由DNA构成的。构成DNA的核苷酸碱基包括A(腺嘌呤)、C(胞嘧啶)、G(鸟嘌呤)和T(胸腺嘧啶)。在现代计算机分子生物学中,找到DNA/蛋白质序列之间的最长公共子序列是一个基本问题。但这个问题有点不同。给定几个DNA序列,你需要从中生成一个最短的序列,使得每个给定的序列都是它的子序列。\u003cbr\u003e\u003cbr\u003e例如,给定\"ACGT\",\"ATGC\",\"CGTT\"和\"CAGT\",你可以按以下方式生成一个序列。这是最短的,但可能不是唯一的一种。\u003cbr\u003e\u003cbr\u003e\u003ccenter\u003e\u003cimg style\u003d\"max-width:100%;\" src\u003d\"CDN_BASE_URL/912403eed22226167c61cf46645e8870?v\u003d1704516247\"\u003e\u003c/center\u003e\u003c/div\u003e"}},{"title":"输入","value":{"format":"HTML","content":"第一行是测试用例数 t。然后是 t 个测试用例。在每个测试用例中,第一行是一个整数 n ( 1\u0026lt;\u003dn\u0026lt;\u003d8 ),表示DNA序列的数量。接下来的 k 行包含 k 个序列,每行一个。假设任何序列的长度在1到5之间。"}},{"title":"输出","value":{"format":"HTML","content":"对于每个测试用例,输出一行,包含可以从这些序列中生成的最短序列的长度。"}},{"title":"示例","value":{"format":"HTML","content":"\u003ctable class\u003d\u0027vjudge_sample\u0027\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e1\r\n4\r\nACGT\r\nATGC\r\nCGTT\r\nCAGT\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003e8\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e"}}]}