t = gets.chomp
q = gets.to_i
p = []
min = 10 # << optimization variable
q.times{|i|
  p[i] = gets.chomp
}


hash = Hash.new{|h,k| h[k] = {}}
0.upto(t.size-min){|i|
  hash[t[i,min]][i] = 1
  hash[t[i]][i] = 1
}
(t.size-min+1).upto(t.size){|i|
  hash[t[i]][i] = 1
}


checked = {}
p.size.times{|i|
  unless checked[p[i]]
    unless hash[p[i][0,min]] || hash[p[i][0]] then
      checked[p[i]] = 0
    else
      ans = 0
      if p[i].size >= min then
        hash[p[i][0,min]].each_key{|j|
          if t[j,p[i].size] == p[i] then
            ans = 1
            break
          end
        }
      else
        hash[p[i][0]].each_key{|j|
          if t[j,p[i].size] == p[i] then
            ans = 1
            break
          end
        }
      end
      checked[p[i]] = ans
    end
  end
  puts checked[p[i]]
}