stiva

Time limit: 0.05s Memory limit: 4MB Input: stiva.in Output: stiva.out

Să considerăm o stivă, iniţial vidă. Putem efectua următoarele operaţii:

  • push(X)push(X) - se introduce în stivă litera XX (evident, în vârful stivei);
  • poppop - se extrage litera aflată la vârful stivei (operaţia pop se execută atunci când stiva este nevidă);
  • toptop - se afişează litera aflată la vârful stivei (operaţia top se execută atunci când stiva este nevidă).

O secvenţă de operaţii este considerată corectă dacă:

  • iniţial stiva este vidă;
  • se execută o serie de operaţii pushpush, poppop, toptop, fără a executa pop sau top când stiva este vidă;
  • la final stiva este vidă.

Utilizând secvenţe corecte de operaţii, putem afişa diferite şiruri de caractere. De exemplu, şirul ABCACBA poate fi generat astfel: push(A)push(A), toptop, poppop, push(B)push(B), toptop, poppop, push(C)push(C), toptop, poppop etc.

O altă secvenţă de operaţii corectă, dar mai scurtă ar fi: push(A)push(A), toptop, push(B)push(B), toptop, push(C)push(C), toptop, push(A)push(A), toptop, poppop, toptop, poppop, toptop, poppop, toptop, poppop.

Cerinţă

Dat fiind un şir format din litere mari, să se determine numărul minim de operaţii dintr-o secvenţă corecte care afişează şirul dat.

Date de intrare

Fişierul de intrare stiva.in conţine pe prima linie un şir format numai din litere mari.

Date de ieșire

Fişierul de ieşire stiva.out va conţine o singură linie pe care va fi scris numărul minim de operaţii dintr-o secvenţă corecte care afişează şirul din fişierul de intrare.

Restricții și precizări

  • Lungimea şirului este 500\leq 500.

Exemplul 1

stiva.in

ABCACBA

stiva.out

15

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