T=lambda j,r:j==r[:len(j)]and all(i==j[-1]for i in r[len(j):])
def f(s):
q,s=[s],[]
for i in q:
if len(i)<2:return 0
a,b,*c=i;r=((c if'['!=str(c[0])[0]else c[0]+c[1:])if c else[])if'N'==a else[[b],b][str(b)[0]=='[']+[b]*['S','D','T'].index(a)+c
if r in s:return 1
if any(T(j,r)+T(j[::-1],r[::-1])for j in s):return 2
q+=r,;s+=r,
import re
def to_list(s):
return eval('['+re.sub('\w|\]', lambda x:f'"{x.group()}",'if x.group().isalpha() else '],', s.replace('(','[').replace(')',']'))+']')
for i in filter(None, """N
NT
SS
S(TNT)
D(D(NN)N)
TN
TS
TNT
T(NTDS)T
T(T(T(NTDS)))""".split('\n')):
assert f(to_list(i)) == 0, i
for i in filter(None, """DD
D(SD)
TDD
D(NSDD)
DD(TT)
S(TSD(TSD))""".split('\n')):
assert f(to_list(i)) == 1, i
for i in filter(None, """TT
ST(ST)
NTTT
NT(DT)
ST(ST)
TTD""".split('\n')):
assert f(to_list(i)) == 2, i
print('tests passed')
VD1sYW1iZGEgaixyOmo9PXJbOmxlbihqKV1hbmQgYWxsKGk9PWpbLTFdZm9yIGkgaW4gcltsZW4oaik6XSkKZGVmIGYocyk6CiBxLHM9W3NdLFtdCiBmb3IgaSBpbiBxOgogIGlmIGxlbihpKTwyOnJldHVybiAwCiAgYSxiLCpjPWk7cj0oKGMgaWYnWychPXN0cihjWzBdKVswXWVsc2UgY1swXStjWzE6XSlpZiBjIGVsc2VbXSlpZidOJz09YSBlbHNlW1tiXSxiXVtzdHIoYilbMF09PSdbJ10rW2JdKlsnUycsJ0QnLCdUJ10uaW5kZXgoYSkrYwogIGlmIHIgaW4gczpyZXR1cm4gMQogIGlmIGFueShUKGoscikrVChqWzo6LTFdLHJbOjotMV0pZm9yIGogaW4gcyk6cmV0dXJuIDIKICBxKz1yLDtzKz1yLAogIAppbXBvcnQgcmUKZGVmIHRvX2xpc3Qocyk6CglyZXR1cm4gZXZhbCgnWycrcmUuc3ViKCdcd3xcXScsIGxhbWJkYSB4OmYnInt4Lmdyb3VwKCl9IiwnaWYgeC5ncm91cCgpLmlzYWxwaGEoKSBlbHNlICddLCcsIHMucmVwbGFjZSgnKCcsJ1snKS5yZXBsYWNlKCcpJywnXScpKSsnXScpCgoKZm9yIGkgaW4gZmlsdGVyKE5vbmUsICIiIk4KTlQKU1MKUyhUTlQpCkQoRChOTilOKQpUTgpUUwpUTlQKVChOVERTKVQKVChUKFQoTlREUykpKSIiIi5zcGxpdCgnXG4nKSk6Cglhc3NlcnQgZih0b19saXN0KGkpKSA9PSAwLCBpCgpmb3IgaSBpbiBmaWx0ZXIoTm9uZSwgIiIiREQKRChTRCkKVERECkQoTlNERCkKREQoVFQpClMoVFNEKFRTRCkpIiIiLnNwbGl0KCdcbicpKToKCWFzc2VydCBmKHRvX2xpc3QoaSkpID09IDEsIGkKCmZvciBpIGluIGZpbHRlcihOb25lLCAiIiJUVApTVChTVCkKTlRUVApOVChEVCkKU1QoU1QpClRURCIiIi5zcGxpdCgnXG4nKSk6Cglhc3NlcnQgZih0b19saXN0KGkpKSA9PSAyLCBpCgpwcmludCgndGVzdHMgcGFzc2VkJykK