タイトル:N M、ストリングの長さ、大文字の各文字列は、M個。任意にi番目とj番目の列、及び交換プレフィックス長kは、交換に基づいて、任意の回数、そのような操作を行うことができます。
異なる文字列の合計数は、元の文字列自体を含む、生成することができます。
サンプル入力:
2 3
ABC
DEF
出力:8
解決するために暴力
line1=list(map(int,input().split()))
n,m=line1[0],line1[1]
li=[]
set_s=set()
for _ in range(n):
s=str(input())
if s not in set_s:
set_s.add(s)
print(set_s)
def f(x):
set_s1=x
for i in range(len(set_s1)):
for j in range(i+1,len(set_s1)):
for k in range(m):
li=list(set_s1)
if li[i][:k]!=li[j][:k]:
s1=li[i][:k]+li[j][k:]
s2=li[j][:k]+li[i][k:]
set_s1.add(s1)
set_s1.add(s2)
return set_s1
while True:
tmp=list(set_s)
set_s=f(set_s)
#print(tmp)
#print(set_s)
if len(set_s)-len(tmp)==0:
print(len(set_s))
print(set_s)
break