2Drumuri

Time limit: 0.3s Memory limit: 256MB Input: 2drumuri.in Output: 2drumuri.out

Se dă o matrice de mărime NN pe NN care conține litere ale alfabetului englez. Definim un drum dreapta-jos ca fiind un șir de celule ale matricei care începe cu celula (1,1)(1, 1), se termină cu celula (N,N)(N, N), iar pentru fiecare celulă (x,y)(x, y) din drum (exceptând ultima), succesoarea sa este fie (x+1,y)(x+1, y), fie (x,y+1)(x, y+1). Spunem că șirul de caractere generat de un drum în matrice este șirul obținut prin concatenarea valorilor celulelor drumului în ordine.

Cerință

Să se găsească 2 drumuri dreapta-jos care nu se intersectează (decât în celulele (1,1)(1, 1) și (N,N)(N, N)) pentru care coeficientul de similaritate este maxim. Coeficientul de similaritate a 2 drumuri reprezintă numărul de poziții ii pentru care ai=bia_i = b_i, 0i<a0 \leq i < |a|, unde aa și bb sunt șirurile generate de cele 2 drumuri.

Date de intrare

Prima linie conține valoarea lui NN. Următoarele NN linii conțin câte NN litere mici ale alfabetului englez, reprezentând matricea.

Date de ieșire

Prima linie va conține coeficientul maxim de similaritate între 2 drumuri dreapta-jos care nu se interesectează decât în capete.

Restricții și precizări

  • 1N3001 \leq N \leq 300
  • Pentru teste în valoare de 2020 de puncte, 1N71 \leq N \leq 7.
  • Pentru teste în valoare de 5050 de puncte, 1N501 \leq N \leq 50.
  • Pentru teste în valoare de 8080 de puncte, 1N1501 \leq N \leq 150.

Exemplul 1

2drumuri.in

3
abe
cef
zfq

2drumuri.out

4

Explicație

Drumurile sunt:

  • abefq: (1,1)(1,2)(1,3)(2,3)(3,3)(1, 1) \rightarrow (1, 2) \rightarrow (1, 3) \rightarrow (2, 3) \rightarrow (3, 3)
  • acefq: (1,1)(2,1)(2,2)(3,2)(3,3)(1, 1) \rightarrow (2, 1) \rightarrow (2, 2) \rightarrow (3, 2) \rightarrow (3, 3)

Exemplul 2

2drumuri.in

4
abcd
bcde
aaaa
zdef

2drumuri.out

5

Log in or sign up to be able to send submissions!