program main implicit none character*50::S integer::i,j,k,maxlen=1,slen,len read *, S slen = LEN_TRIM(S) do len = slen-1, 1, -1 do j=1, slen - len + 1 ! print *, S(j:j+len-1), is_kaibun(S(j:j+len-1),len) if(is_kaibun( S(j:j+len-1), len)) then print '(i0)', len return end if end do end do print '(i0)', 1 contains function is_kaibun(S, len) result(l) logical::l character(*)::S integer::len,i do i=1, len/2 if(S(i:i) .ne. S(len-i+1:len-i+1))then l = .false. return end if end do l = .true. end function is_kaibun end program main