fork(2) download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <bits/stdc++.h>
  3. #include <iomanip>
  4. using namespace std;
  5.  
  6. #define ll long long
  7. #define ld long double
  8. const ll MAXN = 1e6 + 5;
  9. ll spf[MAXN];
  10.  
  11. ll power(ll base, ll exp, ll mod)
  12. {
  13. if (exp == 0)
  14. return 1 % mod;
  15.  
  16. ll half = power(base, exp / 2, mod);
  17. ll ans = (half * half) % mod;
  18.  
  19. if (exp % 2 == 1)
  20. ans = (ans * base) % mod;
  21.  
  22. return ans;
  23. }
  24.  
  25. ll gcd(ll a, ll b)
  26. {
  27. if (b == 0)
  28. return a;
  29. return gcd(b, a % b);
  30. }
  31.  
  32. ll lcm(ll a, ll b)
  33. {
  34. return a / gcd(a, b) * b;
  35. }
  36.  
  37. void sieve()
  38. {
  39. for (int i = 1; i < MAXN; i++)
  40. spf[i] = i;
  41.  
  42. for (int p = 2; p * p < MAXN; p++)
  43. {
  44. if (spf[p] == p)
  45. {
  46. for (int i = p * p; i < MAXN; i += p)
  47. {
  48. if (spf[i] == i)
  49. spf[i] = p;
  50. }
  51. }
  52. }
  53. }
  54.  
  55. vector<pair<ll, ll>> primeFactorization(ll x)
  56. {
  57. vector<pair<ll, ll>> factors;
  58. while (x > 1)
  59. {
  60. ll prime = spf[x];
  61. ll count = 0;
  62.  
  63. while (x % prime == 0)
  64. {
  65. count++;
  66. x /= prime;
  67. }
  68. factors.emplace_back(prime, count);
  69. }
  70. return factors;
  71. }
  72.  
  73. void generateDivisors(const vector<pair<ll, ll>> &factors, vector<ll> &divisors, ll current = 1, int index = 0)
  74. {
  75. if (index == factors.size())
  76. {
  77. divisors.push_back(current);
  78. return;
  79. }
  80. ll prime = factors[index].first;
  81. ll exp = factors[index].second;
  82.  
  83. for (int i = 0; i <= exp; i++)
  84. {
  85. generateDivisors(factors, divisors, current, index + 1);
  86. current *= prime;
  87. }
  88. }
  89.  
  90. vector<int> prefixSum(vector<int> v)
  91. {
  92. vector<int> vc(v.size());
  93. vc[0] = v[0];
  94. for (int i = 1; i < v.size(); i++)
  95. {
  96. vc[i] = vc[i - 1] + v[i];
  97. }
  98.  
  99. return vc;
  100. }
  101.  
  102. ld Gamma(ld n)
  103. {
  104. return tgammal(n);
  105. }
  106.  
  107. int main()
  108. {
  109. ios::sync_with_stdio(false);
  110. cin.tie(nullptr);
  111.  
  112. string s;
  113. cin>> s;
  114.  
  115. bool flag=true;
  116.  
  117. for(int i=0;i< s.length();i++)
  118. {
  119. if(s[i] == '?')
  120. {
  121. s[i]=s[s.length()-i -1];
  122. }
  123. if((s.length() % 2 != 0) && s[s.length()/2]=='?')
  124. {
  125. s[s.length() / 2] = 'a';
  126. }
  127. }
  128.  
  129. for(int i=0;i<s.length()/2;i++)
  130. {
  131. if(s[i] != s[s.length()-i - 1])
  132. {
  133. flag=false;
  134. break;
  135. }
  136. }
  137.  
  138. if(flag)
  139. {
  140. cout<< s<<'\n';
  141. }
  142. else
  143. {
  144. cout<<-1<<'\n';
  145. }
  146. return 0;
  147. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout