We consider the problem of discovering the optimal pair of substring patterns with bounded distance α, from a given set S of strings. We study two kinds of pattern classes, one is in form p ∧α q that are interpreted as cooperative patterns within α distance, and the other is in form p ∧α ¬q representing competing patterns, with respect to S. We show an efficient algorithm to find the optimal pair of patterns in O(N2 ) time using O(N) space. We also present an O(m2 N2 ) time and O(m2 N) space solution to a more difficult version of the optimal pattern pair discovery problem, where m denotes the number of strings in S.