package main
import (
"bufio"
"fmt"
"os"
)
func main() {
const maxVal = 100050
isPrime := make([]bool, maxVal)
for i := 2; i < maxVal; i++ {
isPrime[i] = true
}
for i := 2; i*i < maxVal; i++ {
if isPrime[i] {
for j := i * i; j < maxVal; j += i {
isPrime[j] = false
}
}
}
nextPrime := make([]int, maxVal)
last := 100003
for i := maxVal - 1; i >= 0; i-- {
if isPrime[i] {
last = i
}
nextPrime[i] = last
}
in := bufio.NewReader(os.Stdin)
n := readInt(in)
m := readInt(in)
rowSum := make([]int, n)
colSum := make([]int, m)
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
val := readInt(in)
cost := nextPrime[val] - val
rowSum[i] += cost
colSum[j] += cost
}
}
ans := rowSum[0]
for i := 1; i < n; i++ {
if rowSum[i] < ans {
ans = rowSum[i]
}
}
for j := 0; j < m; j++ {
if colSum[j] < ans {
ans = colSum[j]
}
}
fmt.Println(ans)
}
func readInt(r *bufio.Reader) int {
var n int
var c byte
for {
c, _ = r.ReadByte()
if c >= '0' && c <= '9' {
break
}
}
for {
n = n*10 + int(c-'0')
c, _ = r.ReadByte()
if c < '0' || c > '9' {
break
}
}
return n
}