program vigenere; var k,c:ansistring; lenk,lenc,i,t,x,y,f:longint; b:array[1..2000]of boolean; ch:char; begin readln(k); readln(c); lenk:=length(k); lenc:=length(c); fillchar(b,sizeof(b),false); for i:=1 to lenc do if c[i] in ['a'..'z'] then b[i]:=true; f:=0; k:=upcase(k); c:=upcase(c); for i:=1 to lenc do begin f:=f+1; x:=ord(c[i]); if f>lenk then f:=1; y:=ord(k[f]); t:=x-(y-ord('A')); if t<ord('A') then t:=t+26; ch:=chr(t); if b[i] then write(chr(ord(ch)+32)) else write(ch); end; writeln; end. /************************************************************** Problem: 2314 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/