module Memo = Map.Make(struct
  type t = string * string
  let compare = compare
end)
let str_of_list xs = List.fold_left (fun s c -> s ^ String.make 1 c) "" xs
let pow_str s f =
  let len = String.length s in
  let rec loop idx a b =
    if idx >= len then [(str_of_list (f a), str_of_list (f b))]
    else loop (idx+1) (s.[idx]::a) b @ loop (idx+1) a (s.[idx]::b)
  in loop 0 [] []
let () =
  Scanf.scanf "%d %s" @@ fun n s ->
  let s0, s1 = String.(sub s 0 n, sub s n n) in
  let memo = pow_str s0 (fun x -> x) |> List.fold_left (fun m p ->
    try let v = Memo.find p m in Memo.add p (v+1) m
    with Not_found -> Memo.add p 1 m) Memo.empty
  in
  pow_str s1 List.rev |> List.fold_left (fun s p ->
    try let v = Memo.find p memo in s + v
    with Not_found -> s) 0
  |> Printf.printf "%d\n"