← Home
```go
package main

import (
    "fmt"
)

func main() {
    var n, m int
    fmt.Scan(&n, &m)
    
    a := make([]int, n)
    b := make([]int, m)
    
    for i := 0; i < n; i++ {
        fmt.Scan(&a[i])
    }
    for i := 0; i < m; i++ {
        fmt.Scan(&b[i])
    }
    
    possible := make([][]int, n)
    for i := 0; i < n; i++ {
        seen := make(map[int]bool)
        for j := 0; j < m; j++ {
            seen[a[i] & b[j]] = true
        }
        for c := range seen {
            possible[i] = append(possible[i], c)
        }
    }
    
    dp := make([]bool, 512)
    dp[0] = true
    
    for i := 0; i < n; i++ {
        newDp := make([]bool, 512)
        for mask := 0; mask < 512; mask++ {
            if dp[mask] {
                for _, c := range possible[i] {
                    newDp[mask | c] = true
                }
            }
        }
        dp = newDp
    }
    
    for r := 0; r < 512; r++ {
        if dp[r] {
            fmt.Println(r)
            return
        }
    }
}
```