Se dă un șir s = s
0
, s
1
,…, s
n-1
de n
litere mici. Prin s[i..j]
se înțelege secvența s
i
, s
i+1
, …, s
j
. Asupra șirului se efectuează de mai multe ori operația switch(i,j,c1,c2)
, care în secvența s[i..j]
modifică orice apariție a literei c1
în litera c2
. De exemplu, dacă s=abcdaabcdaaab
, atunci switch(0,5,'a','z')
face ca șirul să devină s=zbcdzzbcdaaab
.
Cerința
Dându-se șirul s
și m
operații switch, să se afișeze șirul s
după efectuarea celor m
operații.
Date de intrare
Fișierul de intrare switchletters.in
conține pe prima linie șirul s
, pe a doua linie numărul natural m
, iar pe următoarele m
linii se află câte două numere naturale și două litere mici ale alfabetului englez, separate prin câte un spațiu i
j
c1
c2
, reprezentând operația switch(i,j,c1,c2)
.
Date de ieșire
Fișierul de ieșire switchletters.out
va conține șirul s
după efectuarea celor m
operații.
Restricții și precizări
- Șirul
s
conține cel mult1.000.000
litere mici:1 ≤ n ≤ 1.000.000
. - Șirul
s
nu conține alte caractere în afară de litere mici. - Într-o operație
switch(i,j,c1,c2)
, întotdeauna0 ≤ i ≤ j < n
, iarc1 ≠ c2
. 1 ≤ m ≤ 2
17
.
Exemplul 1:
switchletters.in
aaaabbbbcccc 3 0 2 a y 5 9 b c 1 3 a z
switchletters.out
yyyzbccccccc
Explicație
Pentru primul exemplu, După operația switch(0,2,’a’,’y’)
, s=yyyabbbbcccc
.
După operația switch(5,9,’b’,’c’)
, s=yyyabccccccc
.
După operația switch(1,3,’a’,’z’)
, s=yyyzbccccccc
Exemplul 2:
switchletters.in
anaaremere 2 3 6 z y 2 7 o x
switchletters.out
anaaremere
Explicație
s
rămâne neschimbat, deoarece literele z
și o
nu apar în șir.