let max_common l =
let pred char n s =
String.length s >= (n+1) && s.[n] = char
in
let in_all c n = List.for_all (pred c n) l in
match l with
[] -> None
| [s] -> Some s
| h :: q ->
let len = String.length h in
let rec iter n =
if n < len then
if in_all h.[n] n then
iter (n+1)
else
n
else
len
in
let maxlen = iter 0 in
Some (String.sub h 0 maxlen)