local s = io.read() if #s == 1 then print(s .. s) os.exit() elseif #s == 2 then print(s .. s:sub(1, 1)) os.exit() end local n = #s local hn = math.floor(n / 2) local f1 = s:sub(1, hn) local f2 = s:sub(n - hn + 1, n):reverse() if n % 2 == 1 then local ngpos = false for i = 1, hn do if f1:sub(i, i) ~= f2:sub(i, i) then ngpos = i break end end if not ngpos then print(f1 .. string.rep(s:sub(hn + 1, hn + 1), 2) .. f1:reverse()) os.exit() end local mid = s:sub(hn + 1, hn + 1) local v = mid == f2:sub(hn, hn) for i = ngpos + 1, hn do if f1:sub(i, i) ~= f2:sub(i - 1, i - 1) then v = false break end end if v then print(f1 .. mid .. f2:sub(ngpos, hn):reverse() .. f1:sub(1, ngpos):reverse()) os.exit() end v = mid == f1:sub(hn, hn) for i = ngpos + 1, hn do if f2:sub(i, i) ~= f1:sub(i - 1, i - 1) then v = false break end end if v then print(f2 .. mid .. f1:sub(ngpos, hn):reverse() .. f2:sub(1, ngpos):reverse()) else print("NA") end else local ngpos = false for i = 1, hn do if f1:sub(i, i) ~= f2:sub(i, i) then ngpos = i break end end if not ngpos then print(f1 .. "a" .. f1:reverse()) os.exit() end local v = true for i = ngpos + 1, hn do if f1:sub(i, i) ~= f2:sub(i - 1, i - 1) then v = false break end end if v then print(f1 .. f2:sub(ngpos, hn):reverse() .. f1:sub(1, ngpos):reverse()) os.exit() end v = true for i = ngpos + 1, hn do if f2:sub(i, i) ~= f1:sub(i - 1, i - 1) then v = false break end end if v then print(f2 .. f1:sub(ngpos, hn):reverse() .. f2:sub(1, ngpos):reverse()) else print("NA") end end