let str = System.Convert.ToInt32(str, 2) |> string
for i in 0 .. str.Length / 2 do
if str.[i] <> str.[str.Length - 1 - i] then
let m2 = ref (seq [ "" ])
let m1 = ref (seq [ "0"; "1" ])
let p = Seq.collect (fun p -> [ "0" + p + "0"; "1" + p + "1" ]) !m2
yield! p |> Seq.filter (fun s -> s.[0] <> '0' && isPal10 s)
|> Seq.map (fun s -> System.Convert.ToInt32(s, 2))