#include <bits/stdc++.h>
#pragma optimize("O3")
using namespace std;
class Graph {
 private:
  map<long long int, vector<long long int> > m;

 public:
  void edges(long long int source, long long int destination) {
    m[source].push_back(destination);
    m[destination].push_back(source);
  }
  vector<long long int> BFS(long long int s) {
    queue<long long int> q;
    map<long long int, long long int> vis;
    vector<long long int> x;
    vis[s] = 1;
    q.push(s);
    while (!q.empty()) {
      s = q.front();
      x.push_back(s);
      q.pop();
      for (auto node : m[s]) {
        if (!vis[node]) vis[node] = 1, q.push(node);
      }
    }
    return x;
  }
};
long long int powi(long long int a, long long int b) {
  if (b == 0) return (long long int)1;
  if (b == 1)
    return a;
  else if (b % 2)
    return a * powi(a, b - 1);
  else
    return powi(a * a, b / 2);
}
long long int b(vector<long long int> a, long long int n) {
  long long int l = 0, r = n - 1;
  while (l <= r) {
    int m = r - (r - l) / 2;
    if (a[m] == 0)
      l = m + 1;
    else {
      if (a[m - 1] == 0 || m == 0)
        return m;
      else
        r = m - 1;
    }
  }
  return -1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  {
    long long int n, t;
    cin >> n >> t;
    if (t == 10 && n == 1)
      cout << -1;
    else if (t == 10 && n > 1) {
      cout << 1;
      for (int i = 1; i < n; i++) cout << 0;
    } else
      for (int i = 1; i <= n; i++) cout << t;
  }
}
